Назад | Перейти на главную страницу

Сервер MySQL теряет соединение

позвольте мне объяснить историю этого вопроса,

Я запускаю Centos 7 на выделенном сервере, когда я впервые установил его, я не делал никаких разделов, потому что я не очень хорошо знаю, как это сделать, и на самом деле я думаю, что это невозможно, потому что я не могу делать резервные копии всего сервера на другой машине.

Итак, это мой диск:

[root@ns527667 ~]# lsblk
NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda      8:0    0    1.8T  0 disk 
└─sda1   8:1    0 1004.5K  0 part 
└─sda2   8:2    0   19.5G  0 part /
└─sda3   8:3    0    1.8T  0 part /home
└─sda4   8:4    0    511M  0 part [SWAP]

Я установил сервер MySQL на / раздел, но со временем все мои БД значительно выросли, поэтому я решил переместить их в /home раздел, было приятно. Тогда я забыл о проблеме с космосом. До переезда я мог подключиться к своей БД, используя localhost в качестве хоста БД, но у него начинались проблемы с подключением, иногда мои приложения теряли соединение, поэтому я изменил хост БД на 127.0.0.1 в тот момент это решило проблему, но теперь иногда снова теряла связь. И иногда время отклика между запросом и результатом высокое (примерно 0-5000 мс).

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

SET GLOBAL max_connections = 500;
SET @@GLOBAL.long_query_time = 1;
SET GLOBAL tmp_table_size = 128000000;
SET GLOBAL max_heap_table_size = 128000000;
SET GLOBAL key_buffer_size = 32000000;
SET GLOBAL thread_cache_size = 20;
SET GLOBAL max_allowed_packet = 8000000;

На самом деле у меня соединений 150-200

Я оптимизировал или, по крайней мере, думаю, что сделал это на всех своих InnoDB

mysqlcheck --user=root --password="pass" -o --all-databases

Это мое /etc/my.cnf

[mysqld]
datadir=/home/var/lib/mysql
socket=/home/var/lib/mysql/mysql.sock
interactive_timeout=86400
wait_timeout=86400
max_connections=1000
innodb_buffer_pool_size=256M
skip-name-resolve
slow-query-log = 1
slow-query-log-file = /home/var/lib/mysql/mysql-slow.log
long_query_time = 2
bind-address="127.0.0.1"
port=3306

symbolic-links=0

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/home/var/lib/mysql/mysql.sock
port=3306

Я использую различные java-приложения, и они очень хорошо работают на моем личном компьютере, но на сервере иногда теряется соединение с такими ошибками:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

или

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Теперь не знаю, что делать ..