通常推荐的数据库至少是选用8核16G,甚至16核32G的机器更加合适一些;数据库执行大量的IO操作所以配置应该高些
通常说你有一个Java系统压力很大,负载很高,其实Java系统主要的压力和复杂度都是集中在你依赖的那个MySQL数据库上的,因为你执行大量增删改查的SQL语句的时候,MySQL数据库需要对内存和磁盘文件进行大量的IO操作,所以数据库往往是负载最高的。
通过我们的经验而言,一般8核16G的机器部署的MySQL数据库,每秒抗一两千并发请求是没问题的,但是如果你的并发量再高些,假设每秒有几千并发请求,那么可能你的数据库就危险了,因为数据库服务器的CPU,磁盘,IO,内存的负载都会很高,弄不好数据库压力过大就会宕机。
对于16核32G的机器部署的MySQL数据库而言,每秒扛个两三千,甚至三四千。当达到每秒上万请求,那么数据库服务器的CPU,磁盘,IO,内存负载瞬间会飙升很高,甚至宕机。
另外对于数据库而言,如果可以的话,最高采用SSD固态硬盘而不是普通的机械硬盘,因为数据库最大的复杂就在于大量的磁盘IO,他需要大量的读写磁盘文件,所以如果能使用SSD固态硬盘,你的数据库每秒能扛得并发请求量就会更高一些。
问题1 :假设你开发的Java系统部署在一台4核8G的机器上,这个Java系统的请求很快,每个请求只需要0.01ms就可以处理完,那么你觉得一台机器部署的Java系统,可以抗下每秒几千并发,几万并发嘛?
理论上,通过增加线程数,内存读写,可以抗下几千甚至上万的并发,但是线程越来越多之后,线程上下文切换很耗CPU。其实也不一定能扛下,因为每秒处理的并发数跟CPU,内存,磁盘IO,网络带宽都有关系。