2013-05-11 2 views
0

Я использовал следующий код для создания подключения к базе данных с использованием файла конфигурации Hibernate.Соединение с сервером завершено и спящий сервер MySQL не закрывается

<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.username">xxx</property> 
<property name="connection.password">xxx</property> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="hibernate.jdbc.batch_size">50</property> 
<property name="show_sql">true</property> 


<!-- C3PO Connection pool setting --> 
<property name="hibernate.c3p0.min_size">3</property> 
<property name="hibernate.c3p0.max_size">100</property> 
<property name="hibernate.c3p0.timeout">5000</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.acquire_increment">3</property> 
<property name="hibernate.c3p0.validate">true</property> 
<property name="hibernate.c3p0.idle_test_period">900</property> --> 
<!-- Connection pool setting --> 

Кажется, соединения успешно открываются и закрываются. Если 10 пользователей получают доступ к веб-сайту в то же время, моя страница входа в веб-сайт длится долгое время через 5 или 10 минут, когда сервер падает. Также я не смог перезапустить сервер mysql, он говорит, что процесс неожиданно прекращается. Затем мне нужно снова установить сервер mysql. Это происходит на моем сервере. Я потерял столько реальных данных для этой проблемы.

Возможно, кто-нибудь предложит мне эффективно использовать соединение с базой данных при одновременном доступе к 10000 пользователям. Каков наилучший подход к решению подобной ситуации.

ответ

0

Ouch. Создайте тестовый сервер, запустите тестер нагрузки (JMeter в порядке) и повторите проблему - чтобы вы могли видеть, что происходит, без реальных данных, подверженных риску.

На данный момент у вас недостаточно информации, чтобы определить проблему.

Как только вы можете повторить эту проблему, попробуйте изменить драйвер JDBC & версий базы данных и связанных компонентов. Но убедитесь, что ваши изменения исправят проблему, сначала создав ее.

Другая вещь, которая может быть симптоматичной, - Жесткий диск, начинающийся с отказа. Если не только ваши данные были повреждены, но вам также пришлось переустанавливать программное обеспечение. Не распространено, но будьте осторожны.


И почему перезапуском/или (в случае необходимости) переустановки MySQL, не имеют ваши данные сохраняются в файлах базы данных?

+0

Да, я writtent небольшой кусок кода, чтобы проверить, является ли закрытие соединения или нет. В моем режиме отладки соединение успешно завершено. Я не знаю, почему соединения растут на сервере mysql. Если он достигает около 150, сервер становится. Я новичок в mysql. На самом деле я потерял свои настоящие данные, после чего снова установил. Как получить реальные данные без удаления сервера mysql ?. – vijayr

+0

Попробуйте использовать JMeter для воспроизведения проблемы. Не имея возможности воспроизвести его, вы не можете знать, какие изменения вы сделаете, на самом деле это исправить. Вы просто будете ждать следующего события отключения/потери данных и, возможно, пострадали от нескольких из них. –

0

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

Независимо от проблем, он испытывает не должен заканчиваться, поэтому он выглядит как вопрос операционной системы, такие как:

  • MySQL работает из памяти
  • MySQL потребляет слишком много ресурсов процессора и является убит ядром
  • нет доступного дискового пространства на разделе, где MySQL работает
+0

Спасибо Адаму! В соответствии с вашей инструкцией я проверил следующие вещи на своем сервере. Сервер Mysql, установленный на диске C, имеет 5 ГБ дискового пространства. В то время как многие пользователи, обращающиеся к серверным соединениям, постепенно расширяются. Если он достигает более 160 или 180 приложений, начинающих вращаться. Если он заработает 5 минут, система получит или перезапустит. – vijayr

+0

Каково использование памяти, когда есть более 160 или 180 соединений?Имеется ли у вашей машины много виртуальной памяти? Если вы работаете на Linux [это] (http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html), может быть полезно. –

+0

Моя конфигурация системы - Windows 2008 R2, C - Объем памяти на диске 30 ГБ, Свободное пространство 5 ГБ (установленный mysql на диске C), оперативная память 2 ГБ. Как вы думаете, достаточно ли этой конфигурации? – vijayr

Смежные вопросы