Запуск более 20 копий PHP по CRON. Как предотвратить падение апача?
Сейчас в системе DEBIAN больше 20 пользователей, у каждого из них каждые 3 минуты запускается один и тот же скрипт, что полностью лишает желания жить апачу, и он благополучно падет, на что NGINX грустно сообщает о 500 ошибке.
Конечно, разум подсказывает о вероятности более элегантного решения, которое обязательно будет реализовано, но сейчас срочно нужно организовать бесперебойную работу текущей схемы.
Ошибки в логах апача:
[Tue Apr 21 15:50:00 2009] [emerg] (28)No space left on device: Couldn't create accept lock (/var/lock/apache2/accept.lock.19320) (5)
При таких раскладах никак, надо сократить количество работающих скриптов, можно время ограничить но они будут завершаться.
Решение: Все скрипты всех юзеров сгоняете в один скрипт и запускаете его без лимитов, например из консоли. Наслаждаетесь загрузкой CPU в 98% Если так не можете то пусть они свои задачи скидывают в единую базу а админ эту базу обработает своим скриптом, у вас ведь парсеры? ;)
Конечно, все идет именно к решению запуска одного скрипта с прогоном по всем юзверям. Но, на данный момент нужен костыль. Может в конфигах увеличить лимит какой...
Обещаю, все сделаю как надо, но сейчас надо шифрануть косяк :)
Алексей: по-моему нет такого костыля, ну или там надо скрипты довольно сложно модифицировать, например он принимает пачку в 1000 каждые 3 минуты, сделать 330 раз в минуту попробовать, или встраивать лимит и делать так что скрипт сам свой лимит слушал и если время к концу подходит быстро записывал где он остановился и в следующий раз продолжал с этого места. Но я говорю, при росте количества скриптов время просто в геометрической прогрессии растёт затраченное, т.е. просто все работать по факту перестают. Нагрузку на CPU каждому юзеру можно ограничить тогда будут шевелится все, но понемногу...
Алексей: Макс кстати прав апач можно поднастроить так что бы он тормозил дико но не падал, правда сильно толку в этом нет если там все сайты на динамике...
Алексей: думаю там будет что-то типа out of memory или я не помню точно как у него ошибка называется когда оверхед памяти или соединений, конечно посмотрите что там
Боюсь, что 100% причастие апача к сему процессу сказать не могу, и признаюсь, не знаю, почему вообще он падает. Запускаю ведь просто: /usr/bin/php /path/script.php
Скрипты проверяют новые письма на почтовых серверах, в большинстве случаев писем нет, и нет речи о больших нагрузка на обработку и тд.
NodeJS упоминался в моей практике лишь однажды, это все, что я знаю о нем.