The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Скрипт скачивания файлов Bitrix вешает сервер, !*! Nas_tradamus, 10-Янв-09, 14:14  [смотреть все]
Добрый день! Замучился совсем!
У меня 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 почему-то игнорирует такие соединения.

Помогите, пожалуйста разобраться!

  • Скрипт скачивания файлов Bitrix вешает сервер, !*! angra, 14:40 , 10-Янв-09 (1)
    Вот бы узнать зачем apache, если php в виде cgi или зачем php в виде cgi, если apache  mpm_prefork. Особо любопытно с чего вы взяли, что апач игнорирует настройки, по предоставленной информации делает как раз то, что вы ему сказали. Ну и наконец как вы видите себе прекращение безобразия, например удаление download.php прекратит безобразие, но вряд ли это то чего вы хотите.
    • Скрипт скачивания файлов Bitrix вешает сервер, !*! Nas_tradamus, 15:06 , 10-Янв-09 (2)
      >Вот бы узнать зачем apache, если php в виде cgi или зачем
      >php в виде cgi, если apache  mpm_prefork.

      Подумал что так будет лучше :).
      А если php-cgi + apache, то какой mpm лучше использовать и почему?

      > Особо любопытно с
      >чего вы взяли, что апач игнорирует настройки, по предоставленной информации делает
      >как раз то, что вы ему сказали.

      По идее, он должен запускать не более 12 процессов, а их висит штук 100.

      > Ну и наконец как
      >вы видите себе прекращение безобразия, например удаление download.php прекратит безобразие, но
      >вряд ли это то чего вы хотите.

      Как можно блокировать даунлод менеджеры при доступе к этому скрипту?

    • Скрипт скачивания файлов Bitrix вешает сервер, !*! Nas_tradamus, 15:25 , 10-Янв-09 (3)
      >Вот бы узнать зачем apache, если php в виде cgi или зачем
      >php в виде cgi, если apache  mpm_prefork. Особо любопытно с
      >чего вы взяли, что апач игнорирует настройки, по предоставленной информации делает
      >как раз то, что вы ему сказали. Ну и наконец как
      >вы видите себе прекращение безобразия, например удаление download.php прекратит безобразие, но
      >вряд ли это то чего вы хотите.

      Вспомнил:
      Apache нужен битриксу (mod_rewrite).

      Раньше у меня был просто Apache + mod_php. Позже я прикрутил Nginx, и еще позже, php-cgi.
      По-моему, в моем случае от архитектуры "Фронтенд-бэкенд" не получится отказаться.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру