我太难了……
从10月8号到10月19号,历时11天,终于把居住证签注搞定了。 :lei:
大晚上的,公司接口压测,测试说单个接口并发50就不行了,看了下线上的日志和监控,发现应用的状态还很健康,性能瓶颈主要是在数据库连接池以及程序线程池上,
initial-size: 80 min-idle: 80 max-active: 80 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 30000 max-evictable-idle-time-millis: 60000
数据库并发连接配置的是80,响应超时的接口,基本都在卡在等待数据库连接池这里,zipkin分析基本等待时间都在60秒左右,太坑了。
接口本身是异步走的线程池处理的,不过这个线程池整个应用共享,好多地方都用的这个线程池,线程池的配置是:
executor = new ThreadPoolExecutor(2, 500, 120L, TimeUnit.SECONDS, new SynchronousQueue(), new CallerRunsPolicy());
导致这个线程池支持的最大并发就是500,一旦压测,轻轻松松就能到这个数,这样的话等待数据库连接的线程数就又会增加,获取数据库连接就更慢……整个恶性循环……
而且数据库的性能应该也存在瓶颈,一旦连接数上来了,数据库压力就大,很大概率会把数据库CPU和内存打满,这个也得提前预防下,我太难了……
最后的最后,历史遗留代码真的很坑人,开发的水平真的参差不齐!!!
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接
你这个居住证办得真是不容易。
大佬带带我
改历史遗留的代码有时候真不如自己写
@龙Ge笔记 可不是,头疼
好事多磨,祝贺。
:lei: