PDA

View Full Version : [PHP] А это нормально ???


anterior
08-07-2008, 11:20
Здравствуйте

... А это нормально когда php-fcgi жрёт 18% процессорных ресурсов?? При этом никаких запросов к веб-серверу не происходит. Я уже не говорю про память...

~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 1912 268 ? S Jul05 0:02 /bin/busybox init
root 2 0.0 0.0 0 0 ? S Jul05 0:00 [keventd]
root 3 0.0 0.0 0 0 ? RN Jul05 0:44 [ksoftirqd_CPU0]
root 4 0.0 0.0 0 0 ? S Jul05 0:18 [kswapd]
root 5 0.0 0.0 0 0 ? S Jul05 0:00
root 6 0.0 0.0 0 0 ? S Jul05 0:48 [kupdated]
root 9 0.0 0.0 0 0 ? S Jul05 0:02 [mtdblockd]
root 72 0.0 0.0 0 0 ? SN Jul05 2:13 [jffs2_gcd_mtd4]
root 99 0.0 0.7 1912 232 ? S Jul05 0:00 logger -s -p 6 -t
root 101 0.0 0.7 1912 240 tts/0 Ss+ Jul05 0:00 /bin/busybox init
root 103 0.0 0.7 1912 240 ? S Jul05 0:00 klogd
root 326 0.0 0.0 0 0 ? S Jul05 0:00 [khubd]
root 693 0.0 0.4 1940 144 ? S Jul05 0:00 /bin/sh /sbin/ifup.pppoe wan
root 719 0.0 0.4 1884 128 ? S Jul05 0:00 wifi up
root 739 0.0 0.0 0 0 ? S Jul05 3:53 [usb-storage-0]
root 740 0.0 0.0 0 0 ? S Jul05 0:00 [scsi_eh_0]
root 746 0.0 0.6 1528 208 ? S Jul05 0:00 /usr/sbin/dropbear
root 771 0.0 0.7 1924 240 ? S Jul05 0:00 httpd -p 80 -h /www -r OpenWrt
root 800 0.0 0.0 0 0 ? S Jul05 0:08 [kjournald]
nobody 961 0.0 0.9 852 296 ? S Jul05 0:08 dnsmasq -l /tmp/dhcp.leases -K -F lan,192.168.1.3,192.168.1.152
root 1116 0.0 0.9 1924 292 ? Ss Jul05 0:01 /sbin/syslogd -m 0 -O /opt/var/log/messages -S -l 7
root 23991 0.0 0.5 980 160 ? Ss Jul05 0:01 /opt/sbin/cron
root 26897 0.0 1.2 1872 368 ? S Jul05 0:08 /opt/bin/ntpd -c /opt/etc/ntp/ntp.conf -f /var/spool/ntp/ntp.dr
root 12147 0.0 0.4 2036 148 ? Ss Jul07 0:01 /opt/usr/sbin/vsftpd /opt/etc/vsftpd.conf
root 22039 0.0 0.6 1888 184 ? S 12:39 0:00 /usr/sbin/pppd nodetach plugin rp-pppoe.so connect /bin/true us
root 22112 0.0 0.6 792 204 ? S 12:39 0:00 /usr/sbin/ez-ipupdate -d -F /var/run/ez-ipupdate.pid -c /etc/ez
root 25294 0.1 2.5 4092 764 ? S 16:12 0:09 /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf
root 25295 0.0 0.7 9336 224 ? Ss 16:12 0:00 /opt/bin/php-fcgi
root 25296 [B]18.2 12.0 9624 3672 ? S 16:12 22:01 /opt/bin/php-fcgi
root 28827 0.1 1.1 1600 364 ? Ss 17:22 0:05 /usr/sbin/dropbear
root 28828 0.0 1.4 1916 436 pts/0 Ss 17:22 0:00 -ash
root 30063 0.0 1.6 1448 516 pts/0 R+ 18:13 0:00 ps aux

~# free
total used free shared buffers cached
Mem: 30516 21632 8884 0 804 10576
-/+ buffers/cache: 10252 20264
Swap: 96380 2708 93672

Novik
08-07-2008, 11:49
... А это нормально когда php-fcgi жрёт 18% процессорных ресурсов??
Возможно, он продолжает обрабатывать к/л ранее выданный ресурсоемкий запрос. Или вошел в бесконечный цикл. Посмотрите по логу список последних запросов к php ресурсам.

anterior
08-07-2008, 12:40
# /opt/etc/init.d/*lighttpd stop
Stopping web server: lighttpd
# ps aux | grep php
#
# /opt/etc/init.d/*lighttpd start
Starting web server: lighttpd
# ps aux | grep php
root 30487 0.1 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 0.0 9.0 9364 2776 ? S 19:13 0:00 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (первый запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 1.6 15.3 9540 4676 ? S 19:13 0:09 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (второй запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 2.6 15.3 9540 4676 ? S 19:13 0:15 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (третий запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 3.3 15.3 9540 4676 ? S 19:13 0:22 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (третий запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 3.3 15.3 9540 4676 ? S 19:13 0:22 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (четвёртый запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 4.0 15.3 9540 4676 ? S 19:13 0:28 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (пятый запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 4.7 15.3 9540 4676 ? S 19:13 0:35 /opt/bin/php-fcgi

Посещение http://192.168.1.1:8081/torrentflux-b4rt/ (шестой запрос)
# ps aux | grep php
root 30487 0.0 9.0 9336 2772 ? Ss 19:13 0:00 /opt/bin/php-fcgi
root 30488 5.4 15.3 9544 4680 ? S 19:13 0:44 /opt/bin/php-fcgi

Да уж... начинает прослеживатся странная закономерность..

# cat /opt/var/log/lighttpd/access.log | tail
cat: /opt/var/log/lighttpd/access.log: No such file or directory
# ls /opt/var/log/lighttpd/ | tail
error.log
# ls /opt/var/log
lighttpd messages
# nano /opt/var/log/messages

Вот и теперь гадай, куда уходят запросы...

Ещё заметил что с прошествием минут(если не делать новых запросов), память php-fcgi потихоньку освобождается, но всё таки, почему в логах нет информации о запросах остаётся непонятным.

Кто-нибудь пользуется torrentflux-b4rt ? Это только у меня так?

anterior
08-07-2008, 13:56
Был виноват,.. забыл включить модуль mod_accesslog поэтому и файл access.log у меня был пуст.

# /opt/etc/init.d/*lighttpd start
Starting web server: lighttpd
# ps aux | grep php
root 31375 0.7 9.0 9336 2772 ? Ss 20:46 0:00 /opt/bin/php-fcgi
root 31376 0.0 9.0 9364 2776 ? S 20:46 0:00 /opt/bin/php-fcgi
root 31384 0.0 1.0 1672 316 pts/0 S+ 20:46 0:00 grep php

Делаю запрос к главной странице...

Смотрю:
# cat /opt/var/log/lighttpd/access.log
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:46:49 +0900] "GET /torrentflux-b4rt/login.php HTTP/1.1" 302 0 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:46:57 +0900] "GET /torrentflux-b4rt/index.php?iid=index HTTP/1.1" 200 33157 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"

Вроде правильно, произошло 2 запроса, первый был перенаправлен

# ps aux | grep php
root 31375 0.2 9.0 9336 2772 ? Ss 20:46 0:00 /opt/bin/php-fcgi
root 31376 9.1 15.2 9524 4656 ? S 20:46 0:09 /opt/bin/php-fcgi
root 31401 0.0 1.0 1672 316 pts/0 S+ 20:47 0:00 grep php

Ещё запрос:
# ps aux | grep php
root 31375 0.2 9.0 9336 2772 ? Ss 20:46 0:00 /opt/bin/php-fcgi
root 31376 15.3 15.3 9544 4672 ? S 20:46 0:18 /opt/bin/php-fcgi
root 31413 0.0 1.0 1672 316 pts/0 S+ 20:48 0:00 grep php

Ещё один запрос:
# ps aux | grep php
root 31375 0.1 9.0 9336 2772 ? Ss 20:46 0:00 /opt/bin/php-fcgi
root 31376 19.5 15.3 9544 4672 ? S 20:46 0:27 /opt/bin/php-fcgi
root 31420 0.0 1.0 1672 316 pts/0 S+ 20:48 0:00 grep php

Логи:
# cat /opt/var/log/lighttpd/access.log
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:46:49 +0900] "GET /torrentflux-b4rt/login.php HTTP/1.1" 302 0 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:46:57 +0900] "GET /torrentflux-b4rt/index.php?iid=index HTTP/1.1" 200 33157 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:47:55 +0900] "GET /torrentflux-b4rt/login.php HTTP/1.1" 302 0 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:48:01 +0900] "GET /torrentflux-b4rt/index.php?iid=index HTTP/1.1" 200 33157 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:48:16 +0900] "GET /torrentflux-b4rt/login.php HTTP/1.1" 302 0 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"
192.168.1.3 192.168.1.2:8081 - [08/Jul/2008:20:48:23 +0900] "GET /torrentflux-b4rt/index.php?iid=index HTTP/1.1" 200 33157 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062117 Minefield/3.0"

...ну вроде все запросы дошли.

А нельзя ли вообще использовать php-cgi вместо php-fcgi в этом торрентфлюксе?

Novik
08-07-2008, 14:16
Ну у Вас там вообще что-то странное творится. Интерпретация index.php занимает 5-7 секунд - не до фига ли? Скорее всего в это время Вы в ps и смотрите. Ну еще некоторое время php память зачищает. На мой взгляд, php скрипты на роутере (особенно сложные) - это вообще зло, не тянет он их.
А нельзя ли вообще использовать php-cgi вместо php-fcgi в этом торрентфлюксе?
Понятия не имею, честно говоря.

anterior
09-07-2008, 05:31
На мой взгляд, php скрипты на роутере (особенно сложные) - это вообще зло, не тянет он их.

Да уж наверное... Вот делали бы лучше веб-морды на чистом Си а не на скриптовых языках, вот думаю здесь была бы скорость :)

Ладно, щас вот попробую установить rtwi - облегчённую торрент-веб морду. Посмотрим как она будет память жрать...

anterior
09-07-2008, 08:46
Установил rtwi (http://projects.cyla.homeip.net/rtwi/wiki/).

Мои выводы: жрёт тоже хорошо но поменьше. Но и возможностей у неё тоже поменьше

# ps aux | grep php
root 7230 1.6 12.1 11260 3696 ? Ss 15:32 0:00 /opt/bin/php-fcgi
root 7231 8.1 22.4 12572 6860 ? S 15:32 0:02 /opt/bin/php-fcgi
root 7244 0.0 1.0 1672 316 pts/0 S+ 15:33 0:00 grep php

# ps aux | grep php
root 7230 0.5 12.1 11260 3696 ? Ss 15:32 0:00 /opt/bin/php-fcgi
root 7231 7.0 22.4 12504 6852 ? S 15:32 0:05 /opt/bin/php-fcgi
root 7246 0.0 1.0 1672 316 pts/0 S+ 15:34 0:00 grep php

# ps aux | grep php
root 7230 0.5 12.1 11260 3696 ? Ss 15:32 0:00 /opt/bin/php-fcgi
root 7231 6.5 22.4 12504 6852 ? S 15:32 0:05 /opt/bin/php-fcgi
root 7253 0.0 1.0 1672 316 pts/0 S+ 15:34 0:00 grep php

# ps aux | grep php
root 7230 0.4 12.1 11260 3696 ? Ss 15:32 0:00 /opt/bin/php-fcgi
root 7231 9.9 22.4 12504 6852 ? S 15:32 0:09 /opt/bin/php-fcgi
root 7255 0.0 1.0 1672 316 pts/0 S+ 15:34 0:00 grep php

# ps aux | grep php
root 7230 0.4 12.1 11260 3696 ? Ss 15:32 0:00 /opt/bin/php-fcgi
root 7231 8.9 22.4 12504 6852 ? S 15:32 0:09 /opt/bin/php-fcgi
root 7257 0.0 1.0 1672 316 pts/0 S+ 15:34 0:00 grep php

О память... память... 22.4%+12.1% Какой ужас!
Я думаю что проблема даже не столько в php, как в fastcgi. Не зря ведь мне босс когда-то говорил что fastcgi очень сильно жрёт память по сравнению с обычным cgi...

Попробовал использовать cgi вместо fastcgi, но rtwi видимо без fastcgi не работает, потому что дальше заглавной страницы авторизации не уходит

Novik
09-07-2008, 09:43
Вот делали бы лучше веб-морды на чистом Си а не на скриптовых языках, вот думаю здесь была бы скорость :)
При нормальном API вполне хватает java скрипта. И таки да, скорость и нагрузка на роутер ниже, т.к. бОльшая часть нагрузки в этом случае ложится на клиент.
Вот Вам, например, скриншот - rtorrent, 53 закачки, из них 7 в настоящий момент активны + js вебморда на слежении.
Вывод - всякие php, питоны и прочие скриптовые реализации хороши исключительно на больших машинах. Никак не на роутере.
Я думаю что проблема даже не столько в php, как в fastcgi. Не зря ведь мне босс когда-то говорил что fastcgi очень сильно жрёт память по сравнению с обычным cgi...
При нормальной реализации никаких отличий в худшую сторону IMHO быть не должно. Т.к. там все отличие - в случае fastcgi процесс попросту из памяти не выгружается между вызовами. Ресурсоемкость та же.
В принципе, можете попробовать подкрутить параметры fastcgi в lighttpd. Там их много достаточно - сколько процессов запускать и т.п.

anterior
09-07-2008, 13:43
Есссс....!!! :)

Я таки нашёл то о чём мечтал. Это nTorrent. Дёшево и сердито. Обычное java-приложение которое просто коннектится по SSH к удалённому хосту и посылает команды к запущенному там rTorrent'у. Вот таких бы приложений побольше, и не надо никаких пхп

http://code.google.com/p/ntorrent/

vectorm
09-07-2008, 13:59
Есссс....!!! :)

Я таки нашёл то о чём мечтал. Это nTorrent. Дёшево и сердито. Обычное java-приложение которое просто коннектится по SSH к удалённому хосту и посылает команды к запущенному там rTorrent'у. Вот таких бы приложений побольше, и не надо никаких пхп

http://code.google.com/p/ntorrent/
Ну смотря кому что надо.
Если надо с любого места подключаться, то лучше локальный Веб интерфейс на роутере.

Novik
09-07-2008, 14:03
Я таки нашёл то о чём мечтал. Это nTorrent.
Рад за Вас ;) Но таки если собираетесь работать с русскими трекерами - крайне рекомендую взять бинарники rTorrent из этой - http://wl500g.info/showthread.php?t=14256 темы.
Вот таких бы приложений побольше, и не надо никаких пхп
Всякий подход хорош для своего. Связка nTorrent+rTorrent имеет массу своих собственных недостатков, например, достаточно большой объем траффика между сервером и клиентом по сравнению с php реализациями.

anterior
09-07-2008, 14:26
Но таки если собираетесь работать с русскими трекерами - крайне рекомендую взять бинарники rTorrent из этой - http://wl500g.info/showthread.php?t=14256 темы.

А можно вкратце, чем они отличаются от оригинальных ?

Вроде пробывал качать с torrents.ru, нормально качает, и русские буквы тоже показываются нормально

И вот ещё непойму, что лучше использовать при подключении nTorrent'ом, RPC соединение или SSH ? Пока пользуюсь SSH

Novik
09-07-2008, 14:59
А можно вкратце, чем они отличаются от оригинальных?
Читайте в теме. Там все написано.
Вроде пробывал качать с torrents.ru, нормально качает, и русские буквы тоже показываются нормально
При некорректно оформленной кодировке в раздаче будет иметь неработоспособность веб-морды и/или падение rtorrent.
И вот ещё непойму, что лучше использовать при подключении nTorrent'ом, RPC соединение или SSH ?
SSH.