• Tag Archives: 并发

nginx要注意的并发配置

单核所能产生的线程数问题

nginx默认只使用cpu的一个核,单核支持的线程数是1024,意味着超过1024就会崩

需要在配置中加上:worker_processes 4 (数字“4”为您所需要使用的核数)

单个文件访问数量的问题

nginx默认只允许单个文件被4096个线程打开,意味着如果nginx的线程超过4096也会崩,哪怕设置CPU核数大于4个

需要在配置中加上:worker_rlimit_nofile 32768

123

研究SpringBoot与非SpringBoot项目以及搭配MyBatis/JPA/Hibernate的并发性能浅度测试

测试环境服务器参数:

CPU:4核8G带宽200M
RDS:1核1G
操作系统:Linux
JDK版本:1.8
WEB容器:Tomcat 8
压测工具:JMeter 3.2

每个组合分别的test内容基本如下(根据搭配的数据库不同,有些方法命名稍有差异):

 

普通SpringMVC+Hibernate项目的各Controller压力测试结果:
123

SpringBoot+MyBatis项目的各Controller压力测试结果:
SpringBoot+Hibernate项目的各Controller压力测试结果

 

SpringBoot+JPA项目的各Controller压力测试结果:
123

SpringBoot+Hibernate项目的各Controller压力测试结果:
123

 

” SpringBoot+MyBatis / SpringBoot+JPA / SpringBoot+Hibernate ” 的get单个user对象压力测试对比:
" SpringBoot+MyBatis / SpringBoot+JPA / SpringBoot+Hibernate " 的get单个user对象压力测试对比

” SpringBoot+MyBatis / SpringBoot+JPA / SpringBoot+Hibernate ” 的获取user所有对象(只有3个数据)压力测试对比:
" SpringBoot+MyBatis / SpringBoot+JPA / SpringBoot+Hibernate " 的获取user所有对象(只有3个数据)压力测试对比

 

总结:

1、在写Controller方法时,普通SpringMVC框架在使用普通的response.write的方式时效率很高,但使用annotation的方式返回数据时效率十分低;反之,使用SpringBoot框架在使用annotation的方式返回数据时效率比传统的response.write方式的运行效率要高出一截。

2、在SpringBoot框架下搭配分别搭配MyBatis、JPA、Hibernate时,其运行效率的差异不大,JPA的方式稍弱一点点。

 

本文属于“cp锋”的原创,虽然内容不是十分精品,但还望尊重本人的研究成果,转发时请注明转载并带上本页面链接,感谢~

close