у нас очень высоконагруженная система с примерно 8,5 миллионами пользователей в день. На самом деле у нас есть 8 Apache2 Loadbalancer (Ubuntu 10.04.3 LTS x64 через DNS-RoundRobin), которые отправляют трафик через AJP1.3 20 рабочим. На этих воркерах наше самописное приложение Grails-Web работает на сервере tomcat7 + java7 (Ubuntu 11.10 x64). Приложение регистрируется в локальной базе данных postgresql 9.1. Все серверы размещены на Hetzner Germany и оснащены процессором Intel® Core ™ i7-2600 с 16 ГБ оперативной памяти и жестким диском Raid 1 емкостью 2x3 ТБ.
В прайм-тайм (с 18 (вечера) до 12 (вечера)) у нас иногда возникают серьезные проблемы с производительностью, но проблема не в оборудовании. ЦП работает максимум на 50%, максимальная нагрузка. 2,5, а ОЗУ использовалось максимум 3-4 ГБ. Но я понятия не имею, в чем проблема.
Вот отрывок из моего server.xml:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
protocol="AJP/1.3"
maxThreads="5000"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="200"
redirectPort="8443"
connectionTimeout="60000"
debug="4"
/>
На пике Tomcats обрабатывает 400-450 доступов в секунду. Есть ли у кого-нибудь советы, как оптимизировать производительность Apache + mod_jk + tomcat7?
Я предполагаю сборку мусора - это может вызвать узкие места на загруженных серверах Java. Изучили ли вы свои журналы сборки мусора, чтобы понять, какие задержки возникают? Какие у вас настройки сборки мусора