Бенчмаркинг Apache с использованием ab

Я выполнял некоторые тесты производительности для Apache, используя ab. Apache в нашем случае работает только как балансировка балансировки нагрузки между двумя серверами Liferay.

Первоначально я тестировал 1000 запросов с 100 одновременными запросами. Тесты прошли хорошо.

Но когда я выполняю тесты для 500 одновременных пользователей с 1000 запросами, тесты не выполнялись.

$ ab -c 500 -n 1000 http://103.XXX/web/guest/statistics This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, Benchmarking (be patient) Completed 100 requests Completed 200 requests Completed 300 requests apr_socket_recv: Connection timed out (110) Total of 386 requests completed 

В ядре можно увидеть следующее сообщение.

 May 13 14:21:15 www kernel: possible SYN flooding on port 80. Sending cookies. 

Я попытался увеличить значение для следующих двух параметров, но тесты все еще терпели неудачу, и одна и та же ошибка видна в файле системного журнала.

 # echo "1024" > /proc/sys/net/core/somaxconn # echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog 

У нас есть кампания, в которой мы ожидаем большое количество обращений к нашему серверу. Поскольку тесты были неудачными, мы несколько обеспокоены тем, сможет ли наш сервер загружать нагрузку. Мы ожидаем около 500-700 одновременных запросов за один день во время кампании.

Просьба предложить, как улучшить производительность сервера для загрузки.

  • Параметр sysctl для правильного ответа ARP
  • настройка flashcache
  • Как ограничить диапазон случайных портов?
  • отключить прозрачные огромные страницы
  • Почему редактирование core_pattern ограничено?
  • Как сохранить настройки ulimit в OSX Yosemite?
  • Восстановить часть пакета, который был случайно удален
  • Кукольная проблема с sysctl
  • One Solution collect form web for “Бенчмаркинг Apache с использованием ab”

    для целей тестирования вам следует отключить syn_cookies:

     echo 0 > /proc/sys/net/ipv4/tcp_syncookies 

    Но снова включите их, если все будет готово!

    Если сервер не может взять нагрузку, вам нужно оптимизировать ваш webapp, настроить свою конфигурацию, использовать какое-то кэширование или использовать более одного сервера, на котором работает loadbalancer. Я не могу больше говорить о деталях, потому что это сильно зависит от вашего приложения и рабочей нагрузки, которую вы ожидаете. Возможно, вам стоит взглянуть на такие проекты, как nginx или лак. Есть ли база данных в вашем бэкэнде? Может быть, это может быть и сапожка …

    Linux и Unix - лучшая ОС в мире.