一个简单的登录接口,8核CPU,500个并发直接CPU吃满。调整到50个并发,还是直接8核CPU跑满。最后无奈用20个并发测下,发现依然跑满。
接口请求很简单,无非就是数据库查询数据验证账号密码,而数据库。
数据库查询和feign调用基本都是io请求,唯一存在计算的就是密码加密,现在用的是BCryptPasswordEncoder.matches()。
网上一查这个方法的确会消耗大量的CPU资源,属于CPU密集型计算。
于是换了一个其他加密方法,500并发,CPU只消耗了60%左右。
数据库QPS也起来了。
测试多次基本稳定了。