我正在尝试构建一个至少应能够处理15000 rps的Web应用程序。我所做的一些优化是将工作池的大小增加到20,并将接受回日志设置为25000。这对阻塞代码有帮助吗?
答案 0 :(得分:0)
20个工作池似乎是the default。
我相信您的情况下的重要问题是您希望每个请求运行多长时间。在我这一边,我希望有数千个短期请求,每个请求的有效负载大小约为5-10KB。由于当前使用的是阻塞的数据库驱动程序,所有这些都会阻塞。我已将默认工作程序池大小增加到40,并使用以下公式明确设置了我的垂直部署实例:
final int instances = Math.min(Math.max(Runtime.getRuntime().availableProcessors() / 2, 1), 2);
在vert.x服务器上仅进行阻止呼叫的vert.x服务器上进行的500个并发客户端运行60秒的测试运行,平均产生了11089个请求中的6个失败请求。在这种情况下,我的测试有效载荷约为28KB。
当然,根据经验,我知道在生产环境中运行软件通常会产生意想不到的结果。因此,在我的情况下,重要的是要制定好的原子性规则,这样我就不会在数据库中得到半生半熟或损坏的数据。