- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Тогда возникает вопрос, каким образом может php скрипт вызвать зависание процесса apache?
time_limit в php.ini настроен на слишком большое значение. Скорее всего, вам уже не хватает процессорной мощности для обработки этого скрипта.
Ваш скрипт не вешает апач. Вешается сам скрипт, а апач в это время ждет, когда же он выполнится.
Правильный ответ - настроить сервер так, чтоб апач убивался вне зависимости от скрипта, на уровне системы
Ага, я уже думал об этом. Так понимю, это надо кроном настроить периодическую проверку зависших процессов и убивать их.
time_limit в php.ini настроен на слишком большое значение. Скорее всего, вам уже не хватает процессорной мощности для обработки этого скрипта.
Для данного скрипта time_limit = 120, насчет перегрузки процессора неуверен - сейчас смотрю через top, там максимум 10-15 процентов показывает.
Вешается сам скрипт, а апач в это время ждет, когда же он выполнится.
А почему не срабатывает timeout в апаче? Или у него другая функция?
Что говорит server-status ?
Что говорит server-status ?
и как он там увидит, зависшие процессы ?
Что говорит server-status ?
Что процесс находится в режиме "W" Sending Reply, иногда в "G" Gracefully finishing.
и как он там увидит, зависшие процессы ?
Ставил maxrequestperchild=1 и видел, что через час-два-три процесс все еще не был убит.
Ага, я уже думал об этом. Так понимю, это надо кроном настроить периодическую проверку зависших процессов и убивать их.
Это может делать и ядро ОС.
Увидит по состоянию воркеров. Аналогичная проблема в своё время была у меня на FirstVDS. Правда возникла она по вине хостера. Но процессы упорно висели. И дело было совсем не в скриптах.
Кстати в других местах всё нормально? Сбои где-нибудь наблюдаются?
Bazis007 добавил 26.07.2010 в 18:11
как много тех и других? В идеале увидеть бы всю картину.
Кстати W - Судя по всему - это живые
G - в свободной природе практически не встречаются, и скорей всего это и есть зависшие.
несколько раз пообновляйте статус и понаболюдайте, прав ли я.
Мне кажется что проблема не в скриптах, а либо в апаче, либо глубже.. Возможно что то с дисковой подсистемой.
Кстати в других местах всё нормально? Сбои где-нибудь наблюдаются?
Нет, в остальном все в полном порядке. Подправил скрипт - все вернулось в норму. В день где-то около 300К запросов, ничего больше не зависает, хотя есть более сложные скрипты.
как много тех и других? В идеале увидеть бы всю картину.
Кстати W - Судя по всему - это живые
В основном все W, G - лишь парочку видел. Как много - ну в среднем 2-3 процесса в минуту зависали, когда ставил maxrequestperchild=1. Всего в день запросов к этому скрипту около 10К.
Вот, кстати, скрипт:
Логика такая: делаю запрос к imageshack.us, отправляю через GET url фотографии, которую этот сайт должен скачать с моего сайта (статика через nginx). Иногда с первого раза не получается, поэтому делаю через цикл, пока не получится верный ответ. По идее, это дело может зависнуть, но через 2 минуты PHP должен остановить скрипт, ну и апач - убить процесс. Когда убрал цикл - т.е. передача данных всего один раз, апач стал нормально работать.
Что процесс находится в режиме "W" Sending Reply, иногда в "G" Gracefully finishing.
Ставил maxrequestperchild=1 и видел, что через час-два-три процесс все еще не был убит.
Взять и посмотреть процесс что делает командой strace. Хорошие дистрибутивы позволяют также установить отладочные символы для популярных программ (типа апача) и использовать gdb, чтобы понять на чем тот "завис":