Помогите проанализировать проблему зависания сервера Glassfish - PullRequest
2 голосов
/ 23 февраля 2011

Мы работаем на сервере Glassfish с около 20 веб-службами метро Jax-WS. Характеристики сервера - Core2Duo с 8 ГБ ОЗУ. Мы используем один http-слушатель для всех веб-сервисов. Разработка имеет значение True. Количество потоков запроса равно 2, а количество акцепторов - 1 Минимальный и максимальный размеры кучи составляют 1 ГБ, а Perm Gen установлен на 512 МБ. Сервисы обращаются к базе данных Oracle через уровень Hibernate, и между сервисами происходит много межсервисных вызовов. Внешний интерфейс - ASP.Net. Наша проблема заключается в том, что когда 4-5 пользователей пытаются получить доступ к приложению одновременно в течение некоторого времени (1 час), сервер Glassfish зависает, а загрузка процессора достигает 100%, а использование памяти составляет около 10-11%. Мы не можем найти никаких указателей относительно того, как отладить эту проблему. В некоторых случаях файл журнала дает исключение java.lang.OutofMemory: PermGenSpace. Но это также не всегда, то есть во многих случаях файл журнала не выдает никакой ошибки при зависании. Также сервер стеклянной рыбы не запускается, если мы пытаемся увеличить пространство Пермского генерала. Нам нужно какое-то направление о том, как диагностировать и двигаться к решению этой проблемы. Версия Glass Fish, которую мы используем, v2.1. У нас есть следующие наблюдения: 1. Добавление большего числа слушателей http (1 слушатель на 4-5 сервисов) продлевает время сбоя, но не дает большого эффекта. 2. При вызове некоторых тяжелых служб (одна за другой) с SOAP-UI мы также сталкиваемся с проблемой зависания при одновременном запуске множества потоков. (например, 8-10 потоков) 3. Мы наблюдали, что при вызове через SOAP-UI сервисная операция (которая не вызывает никаких других сервисов) редко зависает, в то время как сервис, вызывающий другие сервисы, часто зависает.

...