![Apache не отвечает на все запросы](https://rvso.com/image/632734/Apache%20%D0%BD%D0%B5%20%D0%BE%D1%82%D0%B2%D0%B5%D1%87%D0%B0%D0%B5%D1%82%20%D0%BD%D0%B0%20%D0%B2%D1%81%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B.png)
Настройка: У меня около 1 млн телефонов, подключающихся к моему серверу.
Сервер выглядит нормально. Достаточно и ЦП, и ОЗУ - ЦП простаивает около 90% времени (1)
База данных не получает большой нагрузки — менее 100 запросов в секунду (2).
Когда я подключаюсь к серверу через прокси Apache, например «Android Lost», я получаю тайм-аут.
Когда я обращаюсь к серверу приложений напрямую через порт 8080, я сразу получаю ответ.
На данный момент я сделал следующее:
- Перезапустите все службы, базу данных, Apache, Jetty
- Перезагрузил сервер.
- Попробовал установить nginx вместо apache (3)
- Попробовал запустить Jetty на порту 80 и пропустить Apache
- Попробовал настроить сервер (4)
Мне кажется, что на сервер пытается поступить огромное количество запросов, и где-то в Apache есть ограничение, которое необходимо настроить.
Поэтому любые подсказки и предложения будут высоко оценены.
Объявление 1:
top - 20:44:33 up 44 min, 2 users, load average: 2.44, 1.86, 2.80
Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.0%us, 0.4%sy, 0.0%ni, 90.6%id, 7.5%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 12296928k total, 12154152k used, 142776k free, 83228k buffers
Swap: 6287292k total, 0k used, 6287292k free, 10461776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
447 root 20 0 7587m 841m 14m S 9 7.0 0:39.81 java
1287 mongodb 20 0 120g 272m 247m S 3 2.3 1:38.12 mongod
10 root 20 0 0 0 0 S 0 0.0 0:07.57 rcu_sched
364 root 0 -20 0 0 0 S 0 0.0 0:00.96 kworker/0:1H
381 www-data 20 0 1966m 8188 2164 S 0 0.1 0:00.72 apache2
15562 root 20 0 7706m 105m 11m S 0 0.9 0:13.56 java
32636 www-data 20 0 1966m 8012 2236 S 0 0.1 0:00.72 apache2
Объявление 2:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
3 17 2 0 0 6 0 58.2g 120g 293m 11 1.7 0 0|0 0|0 3k 9k 43 20:49:40
11 46 8 0 0 24 0 58.2g 120g 295m 6 5.1 0 0|0 0|0 12k 21k 43 20:49:41
12 63 13 0 0 26 0 58.2g 120g 294m 3 1.3 0 0|0 0|0 17k 35k 43 20:49:42
5 45 6 0 0 12 0 58.2g 120g 296m 6 0.9 0 0|1 2|1 13k 22k 43 20:49:43
5 49 5 0 0 11 0 58.2g 120g 298m 5 0.1 0 0|0 0|0 13k 22k
Объявление 3:
Из журнала ошибок nginx:
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
Объявление 4:
http://www.eclipse.org/jetty/documentation/current/high-load.html#d0e14090
решение1
Это происходит из-за того, что у nginx недостаточно рабочих соединений. Вы можете увидеть это в журнале ошибок nginx:
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
Максимальное количество клиентов, которых может обслуживать nginx, рассчитывается по следующей формуле:
max_clients = worker_processes * worker_connections - keepalive connections
В nginx.conf
вы можете настроить количество worker_processes
и worker_connections
. Обычно это находится в главном файле конфигурации где-то вверху (перед http
директивой):
worker_processes 1;
events {
worker_connections 128
}
Скорее всего, у вас они установлены. Я рекомендую установить значение worker_processes
на число ядер процессора, которое у вас есть, и увеличивать его, worker_connection
проверяя производительность сервера, пока не найдете число, которое ваш сервер может/должен обработать.