В последнее время мы получаем намного больше трафика на наш веб-сервер, и иногда он больше не отвечает. Мы изменили некоторые настройки, и чтобы понять, с чем может справиться наш сервер, я провел несколько тестов ab.
Мы изменили my.cnf на my-large.cnf (http://fts.ifac.cnr.it/cgi-bin/dwww/usr/share/doc/mysql-server-5.0/examples/my-large.cnf.gz) и установите максимальное количество подключений на 350
Проблема в том, что я не уверен, означают ли результаты, что он может обрабатывать много (1000 одновременных пользователей) или нет?
если запустить такой тест:
ab -n 10000 -c 100 www.mysite.com
Я получаю такой результат
Server Software: Apache/2
Server Hostname: www.mysite.com
Server Port: 80
Document Path: /
Document Length: 29311 bytes
Concurrency Level: 100
Time taken for tests: 704.062 seconds
Complete requests: 10000
Failed requests: 1634
(Connect: 0, Receive: 0, Length: 1634, Exceptions: 0)
Write errors: 0
Non-2xx responses: 1634
Total transferred: 255952902 bytes
HTML transferred: 251613362 bytes
Requests per second: 14.20 [#/sec] (mean)
Time per request: 7040.615 [ms] (mean)
Time per request: 70.406 [ms] (mean, across all concurrent requests)
Transfer rate: 355.02 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 11 16 3.1 15 105
Processing: 91 6998 16245.3 5384 237924
Waiting: 90 6814 15642.3 5296 237923
Total: 105 7014 16245.3 5399 237939
Означает ли это, что сервер должен иметь возможность обрабатывать 10000 пользователей?
Наши спецификации сервера:
Я думаю, это должно справиться с некоторым трафиком?
если запустить такой тест:
Затем, в зависимости от того, насколько плохо настроен ваш веб-сервер, вы можете каждый раз получать разные результаты. В самом деле, вы можете захотеть установить цель настройки, чтобы уменьшить разброс между последовательными запусками. И вы действительно не хотите делать это на своем реальном сервере.
Означает ли это, что сервер должен иметь возможность обрабатывать 10000 пользователей?
Нет. Количество пользователей не имеет отношения к объему трафика, который может обработать веб-сервер - ограничение - это количество одновременных запросов. Если вы хотите знать, сколько пользователей может обрабатывать сервер, вам придется провести очень серьезное моделирование, включая рассмотрение таких вещей, как пропускная способность и RTT (запись и воспроизведение сеанса не дает точной картины, хотя это лучше, чем просто ударяя по единственному URL-адресу).
Я не уверен, означают ли результаты, что он может справиться со многими или нет
Сколько это много?
Мы изменили некоторые настройки
Теперь мы к чему-то приближаемся годный к употреблению. Как соотносятся показатели с показателями до применения изменений?
ab
- отличный инструмент, если вам нужно выполнить простые тесты.
Если ваш сайт статический и содержит только один html-документ, вы можете положиться на ab
. Но я не думаю, что это так.
Если ваш сайт динамический, он содержит файлы css, javascript, изображения, ajax, кеш заголовков и т.д. ... Итак ab
неправильно имитирует пользователей и ваш тест не имеет отношения.
Как сделать соответствующий тест?
Ты можешь использовать Jmeter например. Jmeter предлагает прокси которые могут записывать трафик в вашем браузере. Затем вы можете сыграть в нее X раз, чтобы смоделировать количество пользователей.
Конечно, есть также много коммерческих решений (бытовая техника, облако и т. Д.).