httperf зависает при использовании - пожиратель ресурсов

HA! Я наконец нашел проблему сам. Это более связано с программированием, чем администратор сервера, но я решил поместить ответ здесь так или иначе, потому что путем поиска google I нашел, что я не единственный с такой проблемой (и так как Apache зависает, первое предположение - то, что существует проблема с сервером).

Проблема не с Apache, а с моим Wordpress. Более конкретно с моей темой. Я использую тему под названием Lightworld, и он поддерживает добавление изображения к заголовку блога. Признавать, что, это проверяет размер изображения при помощи функции PHP getimagesize(). Так как эта функция открывала другое http соединение с сервером для получения изображения, каждого запроса от ab создавал другой запрос внутренне от PHP. Поскольку я использовал весь свой сервер доступные слоты, эти запросы PHP были помещены в очередь, но Apache никогда не мог добираться до них, потому что все, это - процессы, было заблокировано с исходным запросом, ожидающим слота для завершения внутреннего запроса PHP.

В основном PHP помещала мой сервер в состояние мертвой блокировки, и Apache только начнет работать обычно после того, как эти соединения привели к таймауту ожидания своего "дочернего" запроса.

После того, как я удалил эту функцию из своей темы, теперь я могу ab мой сервер со столькими параллельными соединениями, сколько я хочу, и Apache, является организацией очередей их как ожидалось.

3
задан 16 November 2011 в 14:33
3 ответа
2
ответ дан 3 December 2019 в 06:43

У меня была та же проблема, но патч, указанный в ответе Ниро, не решил проблему для меня. Проблема закончилась повторным использованием и переработкой TCP-соединения. Чтобы исправить это, я выполнил инструкции, указанные на: http://www.speedguide.net/articles/linux-tweaking-121

Соответствующие инструкции заключались в выполнении следующих команд:

  • echo 1> / proc / sys / net / ipv4 / tcp_tw_recycle
  • echo 1> / proc / sys / net / ipv4 / tcp_tw_reuse
4
ответ дан 3 December 2019 в 06:43

strace httperf, который зависает: массовый выпуск bind (1006, {sa_family = AF_INET, sin_port = htons (58815), sin_addr = inet_addr ("0.0.0.0")}, 16) = -1 EADDRINUSE (Адрес уже используется)

применить эхо 1> / proc / sys / net / ipv4 / tcp_tw_recycle эхо 1> / proc / sys / net / ipv4 / tcp_tw_reuse итак, можно установить большие числа и скорость .., а не зависать.

спасибо

-3
ответ дан 3 December 2019 в 06:43

Теги

Похожие вопросы