Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
sleep() молчаливые свиньи CPU
Я запускаю Apache на Linux в пределах VMWare.
Одна из PHP страниц, которые я запрашиваю, делает sleep() , и я обнаруживаю, что если я попытаюсь запросить вторую страницу, пока первая страница является sleep()'ing, вторая страница зависает, ожидая завершения sleep() с первой страницы.
Кто-нибудь еще видел такое поведение?
Я знаю, что PHP не является многопоточным, но это похоже на грубое неправильное обращение с CPU.
Edit: я должен был упомянуть, что использование CPU не вызывает скачков. Что я имею в виду CPU "hogging" заключается в том, что никаких других PHP страницы, кажется, в состоянии использовать CPU, пока страница sleep() передоза.
Возможно, что вызываемая страница открывает сеанс, а затем не фиксирует его, в этом случае смотрите этот ответ для решения.
Вероятно, это означает, что ваш Apache использует только 1 дочерний процесс.
Следовательно:
1-й дочерний процесс обрабатывает запрос (в данном случае спящий, но он может выполнять реальную работу, Apache не может сказать разницу), поэтому, когда приходит новый запрос, ему придется подождать, пока не будет выполнен первый процесс.
Решением было бы увеличить число дочерних процессов Apache, разрешенных для порождения (директива MaxClients , если вы используете префорк MPM), просто удалите sleep() из сценария PHP.
Не зная точно, что происходит в вашем сценарии, трудно сказать, но вы, вероятно, можете избавиться от sleep().
Вы действительно видите, что CPU переходит на 100% или просто не обслуживаются другие страницы? Сколько apache-экземпляров вы запускаете? Все ли они останавливаются, когда вы запускаете sleep() в одном из потоков?
Функция PHP sleep() по существу проходит через цикл холостого хода в течение n секунд. Он не освобождает никакой памяти, но и не должен значительно увеличивать нагрузку CPU.