Рекомендации для веб-сервера Java [закрыто]

В настоящее время я использую DBCP для пула соединений, поскольку он более или менее снабжен tomcat и прост в настройке. Я подумываю о переходе на Glassfish или Jetty и еще не определил, какого провайдера пула подключений я буду использовать.

В настоящее время я использую JBoss Seam с Hibernate и пока получаю приличную производительность с этой конфигурацией.

Я видел несколько статей, в которых говорилось, что c3p0 лучше, и некоторые утверждали, что proxool лучше, а некоторые говорили, что все они находятся в устаревшем состоянии, поэтому dbcp - лучший выбор, поскольку он более обслуживается и имеет документацию.

Сегодня вечером я запустил тесты JMeter и обнаружил, что когда у меня есть 10 одновременных пользователей, заходящих на сайт в любом случайном порядке, без задержки между запросами страниц, dbcp не может установить соединение и взрывается. Я разочарован ошибкой, но в остальном доволен производительностью. Я думаю, что могу немного улучшить производительность с помощью кеширования 2-го уровня.

Вопросы:

  1. Если я не использую EJB или OSGI, является ли Jetty 7 явным победителем над Glassfish и tomcat 6? Он, безусловно, намного меньше и, следовательно, должен потреблять меньше ресурсов из коробки. На данный момент я развертываю только 1 веб-приложение, позже я разверну еще.

  2. Какой пул соединений вы рекомендуете для простого сервера приложений? Я не ожидаю, что у вас будет 10 одновременных пользователей без задержки между запросами, но приятно знать, что приложение может обработать до того, как оно взорвется, и что оно делает, когда достигает этой точки.

  3. Наконец, ошибка «Невозможно получить соединение» обычно указывает на то, что запрос выполняется слишком долго, и, следовательно, это соединение не может быть возвращено в пул. Помимо обеспечения эффективного выполнения всех запросов, какие еще области вы бы проверили?

Исключение:

00:38:38,886 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
00:38:38,898 ERROR [JDBCExceptionReporter] Already closed.
00:38:46,823 INFO  [DefaultLoadEventListener] Error performing load command
org.hibernate.SessionException: Session is closed!

Мое среднее время ответа составляет 300 мс, минимум 100 мс, максимум 5 с и стандартное отклонение 300 мс. Это базовый сервер Linode (оперативная память 360 МБ, простейший пакет).

Есть еще комментарии?

Спасибо,

Уолтер

2
задан 29 October 2009 в 03:16
1 ответ

Посмотрите

http://javatech.org/2007/11/c3p0-vs-dbcp-the-straight-dope/

особенно второй комментарий (тот Darren Hicks относительно блокирующегося поведения).

0
ответ дан 3 December 2019 в 16:03
  • 1
    Спасибо за Ваш комментарий, какие-либо другие рекомендации по вопросу 1? Я верю проблеме, которую я видел, был от блокирующегося поведения. I' ll, вероятно, выполняют след с каждым на сервере и видят, какой работает лучше всего, так как это тривиально (практически) для выключения поставщика пула соединения. –   29 October 2009 в 14:53

Теги

Похожие вопросы