Добрый день! Замучился совсем!
У меня P4 3.0GHz, 1GB RAM, FreeBSD 7.0 i386, Nginx + Apache 2.2.11 (preforked) + PHP 5.2.8 (php-cgi).В Битриксе есть такой скрипт, который занимается отдачей файлов:
/download.php?element_id=5444&iblock_id=19.
Причем, что бы закачать файл для отдачи, нужно воспользоваться средством Битрикса: он разбивает файл на кучу кусков и помещает в разные директории.
В общем, получается так, что при отдаче, каждые N секунд Апач каждый раз дергает PHP.
Когда много юзеров качает этот файл, да еще и при помощи даунлоад-менеджера, становится совсем все плохо: висит множество процессов Apache и php-cgi, которые рано или поздно съедают всю память. Причем, почему-то Апач игнорирует настройки mpm:
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 2
MaxSpareServers 2
MaxClients 12
MaxRequestsPerChild 0 (100/200/300/1000 - все равно)
</IfModule>
Вот выдержка из server-status:
Current Time: Saturday, 10-Jan-2009 14:09:37 UTC
Restart Time: Saturday, 10-Jan-2009 13:28:47 UTC
Parent Server Generation: 0
Server uptime: 40 minutes 50 seconds
Total accesses: 1156 - Total Traffic: 1.3 MB
CPU Usage: u.710938 s2.86719 cu694.219 cs0 - 28.5% CPU load
.472 requests/sec - 559 B/second - 1186 B/request
48 requests currently being processed, 7 idle workers
WWW_W_WWWWWW.._.W.WWWW.W_WWWWWWWWW._..WWW..WWWWW.WW_W_.WWWWW...W
WW..WW..W.....W.................................................
................................................................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 1128 0/31/31 W 52.73 332 0 0.0 0.04 0.04 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
1-0 1129 0/15/15 W 28.53 333 0 0.0 0.02 0.02 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
2-0 3392 0/3/15 W 9.09 340 0 0.0 0.01 0.01 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
3-0 3892 0/1/22 _ 0.00 10 529 0.0 0.00 0.04 79.105.235.159 www.site.ru GET /personal/profile/ HTTP/1.0
4-0 3394 0/5/20 W 16.88 79 0 0.0 0.01 0.01 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
5-0 1203 0/14/14 _ 19.38 9 1750125 0.0 0.02 0.02 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
6-0 2670 0/2/18 W 3.82 184 0 0.0 0.00 0.02 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
7-0 1495 0/7/13 W 31.34 166 0 0.0 0.00 0.00 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
8-0 1242 0/15/15 W 33.30 11 0 0.0 0.01 0.01 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
9-0 3395 0/1/18 W 0.00 325 0 0.0 0.00 0.03 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
10-0 2719 0/10/21 W 18.30 104 0 0.0 0.01 0.02 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
11-0 2022 0/19/37 W 20.01 66 0 0.0 0.03 0.05 83.149.19.92 www.site.ru GET /download.php?element_id=5274&iblock_id=14 HTTP/1.0
Может есть какой-нибудь способ остановить это безобразие?
mod_evasive почему-то игнорирует такие соединения.
Помогите, пожалуйста разобраться!