输出日志有这些信息
2016-08-16T02:23:09.831827Z 112241 [Note] Aborted connection 112241 to db: 'test' user: 'admin_logs' host: 'ip' (Got an error reading communication packets)
时区信息比系统时间晚八个小时
mysql> show global variables like '%time%';
+----------------------------------+-------------------+
| Variable_name | Value |
+----------------------------------+-------------------+
| binlog_max_flush_queue_time | 0 |
| connect_timeout | 10 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| default_password_lifetime | 0 |
| delayed_insert_timeout | 300 |
| explicit_defaults_for_timestamp | ON |
| flush_time | 0 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 3 |
| innodb_old_blocks_time | 1000 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 3600 |
| lc_time_names | en_US |
| lock_wait_timeout | 31536000 |
| log_timestamps | UTC |
| long_query_time | 2.000000 |
| max_execution_time | 0 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| slow_launch_time | 2 |
| slow_query_log_always_write_time | 10.000000 |
| system_time_zone | CST |
| thread_pool_idle_timeout | 60 |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| wait_timeout | 3600 |
+----------------------------------+-------------------+
从上面结果可以看到log_timestamps为UTC
修改日志格式时区为system
SET GLOBAL log_timestamps = SYSTEM;
线程池idle超时问题
现象
2016-08-16T10:34:05.578546+08:00 112225 [Note] Aborted connection 112225 to db: 'admin_pandatv_logs' user: 'admin_logs' host: '10.110.19.72' (Got an error reading communication packets)
2016-08-16T10:36:32.357267+08:00 112144 [Note] Aborted connection 112144 to db: 'admin_pandatv_logs' user: 'admin_logs' host: '10.110.19.73' (Got an error reading communication packets)
2016-08-16T10:37:35.649574+08:00 112243 [Note] Aborted connection 112243 to db: 'admin_pandatv_logs' user: 'admin_logs' host: '10.110.19.72' (Got an error reading communication packets)
2016-08-16T10:41:14.044258+08:00 112091 [Note] Aborted connection 112091 to db: 'admin_pandatv_logs' user: 'admin_logs' host: '10.110.19.72' (Got an error reading communication packets)
2016-08-16T10:43:58.980932+08:00 112228 [Note] Aborted connection 112228 to db: 'admin_pandatv_logs' user: 'admin_logs' host: '10.110.19.73' (Got an error reading communication packets)
原因
thread_pool_idle_timeout 设置的是60S
当有业务访问时,atlas会和mysql建立连接池,60S内如果持续有访问那么会复用该连接池,如果60S内无访问,那么mysql端就会进行回收空闲连接
解决
对于这种问题,个人觉得不用去刻意更改他,对于高并发业务这个错误不会出现,对于低并发业务重新建立一次连接本身也不会有多大性能损耗