一.2015-07-26
1.事件:订单量突然达到1000+。
2.异常:tomcat不断抛出broken pipe的异常。
3.疑因:
3.1 tomcat最大连接数
3.2 tomcat超时设置
3.3 java项目mysql最大连接池数太小
3.4 mysql最大连接数太小
3.5 访问量开始增加
3.6 首页接口/订单列表接口等,回传json串太长(13151字符)
4.处理:
4.1 /mnt/appserver/tomcat.7777/conf/server.xml中修改connector下最大连接数为500
4.2 /mnt/appserver/tomcat.7777/conf/server.xml中修改connector下超时设置为60s
4.3 vi /etc/sysctl.conf 中改了相应的配置 并 /sbin/sysctl -p使其生效
4.4 mysql最大连接数改为1000
4.5 java项目mysql最大连接池改为130
4.6 vi /etc/profile 增加 信号处理
5.结果
处理时长3小时,将java下mysql最大连接池增大后,有明显好转,推测与数据库有关,但还是有异常出现,没能彻底解决。
二.2015-07-29
1.事件:提高并发量处理能力
2.处理:
负载均衡,多服务器部署
三.2015-08-02
1.事件:提高并发量处理能力
2.异常:tomcat不断抛出broken pipe的异常。
3.疑因:
3.1 数据库接收调用数超出所能承受的数量
3.2 table_open_cache缓存数过小(64)
4.处理:
4.1 提高mysql最大连接数至3000。(show variables like ‘%max_connections%’;)
4.2 提高table_open_cache缓存数至2048。(show variables like ‘%table_open%’;)具体数值还需根据高峰期的open_tables和opened_tables进行设置(show global status like “open%_tables”;)
5.结果
处理时长20分钟,将table_open_cache数增大后有明显好转,可断定异常原因为mysql数据库,是否彻底解决待观察,仍需优化。
四.2015-08-04
1.异常:
1.1 tomcat不断抛出broken pipe的异常。
1.2 数据库aborted_connection持续增加。
1.3 数据库error_log报 sort aborted
1.4 数据库error_log报 max_allowed_packet值过小
2.疑因:
配送员查询单个未抢订单调用频繁,thread_cache_size过小。
3.处理:
3.1 thread_cache_size = 64。
3.2 停掉配送员查询单个未抢订单。
3.3 max_allow_packet = 32M
4.结果
处理时长2小时,停掉配送端轮循的SQL逻辑后没有再次发生,推测是排序过多而排序缓存太小导致连接断开,mysql参数需重新配置。