我的 spring 应用程序的页面需要 5 毫秒来呈现,并且使用 ab 我每秒收到大约 200 个请求。
我在单核虚拟机上进行了测试。
现在这个页面只是简单地获取一个xml文件并解析它并初始化一个对象,然后将该对象插入到mysql中。
现在假设 mysql 没有阻塞(连接池不够大,或者表锁),添加另一个核心应该使我的每秒请求数加倍,对吗?
如果我每秒收到 200 个请求,单个线程访问 tomcat,我应该在增加线程时继续加倍我的 rps,对吗? (显然在某些时候)。
通常瓶颈是什么,因为 mysql 似乎能够在非常简单的 servlet 应用程序上每秒处理 3-4K 的插入。
最佳答案
从单核更改为双核应该会如您所愿。如果更多内核和更高负载发挥作用,您可能会面临线程调度对所有线程都不公平的问题。
由于同时分配和释放了更多内存,因此垃圾收集可能会成为一个问题。
只要所有请求的处理速度不超过处理 (200 * 5ms) 1000 毫秒(您应该有大约 300 毫秒的空闲时间)。你没事。 但是由于调度,在每次系统调用(主要是来自 DB 的 I/O)上从用户模式更改为内核模式会增加处理请求所需的额外时间。这可能会导致瓶颈。
关于java - 多核对5ms处理页面的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539172/