Судя по большому числу reading, есть ощущение, что nginx проводит время
в SSL handshake'ах. Что можно попробовать ? Во-первых, keep-alive,
а во-вторых оставить только один рабочий процесс, в этом случае сессии SSL
будут лучше кэшироваться (nginx, в отличие от Апача, поддерживает
кэширование
сессий только внутри одного процесса).
Похоже это было оно, keep-alive не трогал, но оставил только
master-процесс. В пик видел 10% процессора на nginx, значительно лучше
чем было.
В смысле только master-процесс ? Должен работать только один worker.
Нужно или убрать директиву worker_processes (тогда по умолчанию будет
только одни worker), или явно указать "worker_processes 1".
То есть, должно выглядеть примерно так:
ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'
PID PPID %CPU VSZ WCHAN COMMAND
33272 37759 28.7 26864 - nginx: worker process (nginx)
37759 1 0.0 9528 pause nginx: master process /usr/local/nginx/nginx
Игорь Сысоев
http://sysoev.ru