18.06.2011, 21:01, "Mikolaj Golub" <[email protected]>:
> On Sat, 18 Jun 2011 17:37:04 +0400 Sergey Litvyachenko wrote:
>
>>>  Странная проблема имеется:
>>>  при загрузке файла на сервер через web (http) в темпорари директорию 
>>> загружается только часть файла -
>>>  а именно 61428 байта (вообще непонятно откуда такое значение берётся), и 
>>> всё - дальше всё
>>>  замирает - браузер "отваливается" по таймауту.
>
>  SL> Вы знаете иногда загружается в /tmp кусок файла больше, чем 61428 байт
>
>  SL> # ls -l /tmp/php*
>  SL> -rw-------  1 www  wheel  61428 Jun 18 16:24 /tmp/phpY1ZqDH
>  SL> -rw-------  1 www  wheel  66066 Jun 18 16:32 /tmp/phpiuGMAl
>  SL> -rw-------  1 www  wheel  65084 Jun 18 16:32 /tmp/phpjuGMAl
>  SL> -rw-------  1 www  wheel  61428 Jun 18 16:25 /tmp/phpkuGMAl
>
>  SL> Но в большинстве случаев именно 61428 байта.
>
> А если не через apache заливать, нету проблем?
>
> Например, на сервере:
>
> nc -l server 8888 | dd of=/dev/null
>
> На клиенте:
>
> dd if=/dev/zero bs=1024 count=100 | nc server 8888
>
> --
> Mikolaj Golub
Получается такая ситуация:
1)
если сделать
# nc -l 193.110.17.229 8888 | dd of=/tmp/test.data
на сервере в хост-системе, а не в jail-е,
а на клиенте
$ dd if=/dev/zero bs=1024 count=100 | nc 193.110.17.229 8888
то этот мегабайт заливается мгновенно.

2)
А вот если сделать
# nc -l 10.19.0.20 8888 | dd of=/tmp/test.data
то есть в jail-е,
а на клиенте
$ time dd if=/dev/zero bs=1024 count=100 | nc 193.110.17.229 8888
то этот мегабайт тоже заливается, но времени уходит на этот процесс довольно 
много
$ time dd if=/dev/zero bs=1024 count=100 | nc 193.110.17.229 8888
100+0 records in
100+0 records out
102400 bytes transferred in 1.206328 secs (84886 bytes/sec)

real    0m33.029s
user    0m0.000s
sys     0m0.010s

При этом если смотреть на размер /tmp/test.data, то
он мгновенно увеличивается до 66048 байт, а дальше "затык" и "прорыв" спустя 
секунд 15 наверное.

Проброс портов организован через pf - раньше такая схема работала (и работает) 
на ура только на системах < 8.2
Тут напомню
uname -sri
FreeBSD 8.2-RELEASE-p2 MYKERNEL

Кусок из /etc/pf.conf:
EXT_IF          ="vlan897"
EXT_IP          ="193.110.17.229"

INT_IF          ="alc0"
INT_IP          ="10.19.0.1"
WWW_INT_IP      ="10.19.0.20"

table <persist_ips> const persist { $INT_IP, $WWW_INT_IP, $EXT_IP }

rdr pass inet proto tcp from any to $EXT_IP port $HTTP_PORT -> $WWW_INT_IP port 
$HTTP_PORT
pass in quick inet proto tcp from any to <persist_ips> port $HTTP_PORT flags 
S/SA synproxy state

Грешил на последнюю строку - отключал - не помогло.
Когда перенаправлял в jail - делал по аналогии с 80-портом:
rdr pass inet proto tcp from any to $EXT_IP port 8888 -> $WWW_INT_IP port 8888
pass in quick inet proto tcp from any to <persist_ips> port 8888 flags S/SA 
synproxy state

Ответить