- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Прошу подсказать, как сделать так, чтобы не активные процессы apache2 автоматически убивались. При каждом выполнении скрипта появляется процесс apache2, который ест память и собственно который был задействован при выполнении этого скрипта.
выглядит это так
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1034452k total, 518660k used, 515792k free, 9664k buffers
Swap: 0k total, 0k used, 0k free, 96936k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2094 www-data 20 0 222m 174m 5936 S 0 17.2 1:41.25 apache2
2091 www-data 20 0 222m 174m 5936 S 0 17.2 1:20.33 apache2
1191 mysql 20 0 137m 22m 5876 S 0 2.2 0:39.67 mysqld
2090 www-data 20 0 45780 13m 5232 S 0 1.3 0:00.24 apache2
2093 www-data 20 0 45380 12m 5028 S 0 1.3 0:00.30 apache2
2101 www-data 20 0 44152 11m 5236 S 0 1.2 0:00.24 apache2
2067 root 20 0 42876 11m 6108 S 0 1.1 0:00.09 apache2
Не помогло:
1. KeepAlive off
2. MaxRequestsPerChild 100
На firstvds это как-то автоматически убивается, на ВДС-ке другого хостера процессы упорно висят.
ServerLimit 20
в той же секции, где и MaxRequestsPerChild поставьте. И будет не более 20 процессов.
По топу видно что процессы активно работают
Значит ваши скрипты чтото делают
За что же их убивать?
в той же секции, где и MaxRequestsPerChild поставьте. И будет не более 20 процессов.
Проблема не в количестве процессов или вы имели в виду что-то другое.
По топу видно что процессы активно работают
Значит ваши скрипты чтото делают
За что же их убивать?
Как раз не работают. На сервере запускается 1 скрипт (вручную). При каждом запуске задействован 1 процесс apache2 и некоторые другие, причём каждый раз новый. На последних секундах выполнения скрипта % используемой памяти возрастает с 4 до 17-20 и всё, в таком состоянии процесс apache2 остаётся.
При следующем запуске всё повторяется. Таким образом, в TOP появляется после 3 запусков 3 процесса apache2 (после 4-х 4-е и т.д.), каждый из которых использует 17-20 % памяти, но ни один из них не активен.
Самое интересное, что если запускать по крону тот же скрипт /usr/bin/php -q путь к скрипту, то вместо apache2 работает php и при завершении работы память высвобождается прямо во время завершения скрипта. Т.е. последняя секунда 17 % памяти использует php, следующая 0 % (процесс php килится).
PS На ВДС хостинге firstvds процесс apache так же занимает память на последних секундах и килится после выполнения скрипта. Вот я и хочу понять, т.к. скрипты запускаются аналогичные, причину такого поведения второго сервера. Думал, причина в конфике apache, но они идентичны на этих двух серверах. Значит, причина где-то ещё.
scrivente, все что вы описываете - нормальное поведение apache.
Нужно просто научиться с этим жить. Поэтому вам и советуют изменить количество процессов и количество запросов перед остановкой одного процесса.
Подбирайте эти значения до удовлетворения.
Из тех же соображений ставят nginx, если речь все-таки идет о сайте с реальными пользователями. И вы поставьте.
В некоторых хороших скриптах техника программирования такова, что они специально удаляют использованные массивы и объекты перед тем как перейти к следующему шагу обработки. Таким образом общая планка памяти ниже.
MaxRequestsPerChild=1
Проблема не в количестве процессов или вы имели в виду что-то другое.
Как раз не работают. На сервере запускается 1 скрипт (вручную). При каждом запуске задействован 1 процесс apache2 и некоторые другие, причём каждый раз новый. На последних секундах выполнения скрипта % используемой памяти возрастает с 4 до 17-20 и всё, в таком состоянии процесс apache2 остаётся.
У вас очень плохие скрипты, так как по симптомам это похоже на утечку памяти
MaxRequestsPerChild=1
good one bro
А, вы это имели ввиду.
Тогда вам поможет например:
Apache стартует с 1 процессом, и при множестве запросов максимальное количество процессов - 10. Как только запросов больше нет, то количество процессов apache сокращается до 3.
Если через ps aux | grep apache будете смотреть, то процессов будет на 1 больше, так как один из них "менеджер".
Это я имел ввиду, если у вас используется prefork-модель. <IfModule mpm_prefork_module> ... </IfModule>
решил :)
/usr/sbin/apachectl graceful
Изящное убийство каждые 30 минут по крону. Хорошо то, что процесс, нагружающий память, убивается только после того, как скрипт будет выполнен.
Изящное убийство каждые 30 минут по крону.
устранение головной боли посредством отделения головы от тела 🍿