Tomcat работает ужасно без видимой причины

Мы запускаем игровое приложение.WAR на Tomcat 6 на сервере Amazon EC2, 8-ядерный процессор, 7 ГБ ОЗУ. Приложение использует базу данных MySQL, размещенную на Amazon RDS.

Это приложение Facebook требует доступа, когда его играют всего 20-30 пользователей. Большая разница от 1-2 пользователей. Весь.WAR составляет ~4 Мб, весь статический контент размещен в другом месте.

Сервер никогда не был близок к нехватке оперативной памяти. Загрузка ЦП никогда не была выше 13,5-14%. Даже с ~500 пользователями это полностью замедлило все. Количество потоков или пулов потоков не близко к максимальному. Я увеличил максимальные потоки, но это не имело заметного значения.

Моя теория заключается в том, что Tomcat может использовать только одно процессорное ядро, что объясняет, почему оно было остановлено, даже несмотря на то, что загрузка процессора стабильно составляла 13-14% при пике активности.
Но я изо всех сил пытаюсь понять, почему он будет использовать только одно ядро ​​процессора. В server.xml нет ограничения по процессору. Приложение содержит несколько сервлетов (4 или 5). Там нет упоминания SingleThreadModel в коде Java.

Что может быть причиной того, что приложение работает очень медленно? Если в приложении только 1-5 человек, оно работает нормально. С 20-30 людьми это почти невозможно.

1 ответ

Это может быть недостатком в дизайне приложения. У нас также есть одно приложение, которое проявляет такое же поведение. Значительная часть его кода синхронизируется, поэтому независимо от того, сколько процессоров мы ему даем - он эффективно работает в одном потоке. В этой ситуации вы практически ничего не можете сделать, кроме запуска нескольких экземпляров одного и того же приложения и распределения нагрузки между ними.

Другие вопросы по тегам