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