历时七天(包括一个凌晨两点、一个凌晨三点下班)终于解决了项目高并发问题,最初jmeter压测一直并发上不去,包括程序假死、程序内存溢出...在术巧大佬的带领下首先我们解决slowsql问题,但是nginx依然报504bad away ,接着我们压测一个查询接口,依然504,这样我们就排出了程序问题,我们觉得可能会是dsf单体框架问题or数据库连接池Druid问题,所以我们增大了Druid的Maxactive,以及一些其他参数,依然出现nginx504,接下来我们简单搭了一个springboot+mybatis+druid 的一个demo项目测试,单个tomcat并发可以达到200,所以这时候我们觉得是框架问题,我们找到了公司创新的架构师基富大佬,然后又做了一堆尝试依然无果,第二天基富大佬测试说他自己去本地压测没有问题,所以我们就顺着这条线,我在测试环境,本地环境,生产环境,分别测试了dsf初始化项目,以及我们的dsf项目,最终发现本地和测试环境压力测试都没有问题,所以肯定问题出现在了生产环境,接着我们在生产环境重新装了redis进行测试,发现依然有问题,排除redis问题,
接下来我们用其中一台生产curl正在继续压测跑项目的生产机器,发现curl的通!!!但是外网访问依然504,终于找到问题了,就是这台机器nginx转发出了问题,检查nginx发现真有转发失败的情况,接下来大佬也不断尝试去修改nginx配置,当然依然无果,最终在修改机器句柄为无限制以及网络优化后终于可以压测不会报504了!!!
< END >
程序员NBA
一个有故事的程序员
或者加我微信1414200300一起讨论java技术,有什么问题群里人也可以帮你一起解决