Play Framework - AWS 的生产配置 threads/db 个连接

Play Framework - production configuration threads/db connections for AWS

我们有一个 Play Framework 应用程序,我们 运行 正在处理生产问题。我很好奇人们在您的 production.conf 上使用了哪些设置来确保您的网络服务器不会变慢。我们有一个基本的 Web 应用程序,可以与 Mysql 通信、发送电子邮件、短信,并有一个登录门户。

如果您使用的是 AWS EC2 实例(比如 t2.large),您在线程池中设置了多少个线程,数据库连接池中有多少个连接以及您的 Xms 和 Xmx 是什么内存设置为?

谢谢。

If you're using an AWS EC2 instance (say a t2.large) how many threads to you set on your thread pool

我认为这可能是您遇到问题的可能根本原因之一。有一个 ThreadPool,或者更准确地说 ExecutionContext 包裹了一些 ExecutorService(例如 FixedThreadPoolExecutorService)被认为是不好的做法,因为它在应用程序可用于阻塞操作,如数据库访问 - 例如 MySql 在你的情况下,最终将导致整个线程阻塞,以及其他应用程序部分的性能问题,如新连接处理或响应呈现。

您需要做的是对阻塞和非阻塞操作使用不同的 EC 实例 - 我们称它们为 frontend EC(对于非阻塞)和 backend EC(对于阻塞)。

  • frontend EC 您需要在视图和服务级别(API 控制器、业务逻辑等)中使用;
  • backend EC 您需要在 DAO 应用程序级别或任何可能的阻塞 pars 中使用;

在这两个 EC 之间分配资源的方式实际上取决于上下文。例如,您可以从 frontend EC 的 80% 线程和其他 20% backend EC 的线程开始,然后继续调整,直到您获得所需的性能结果。

但总的来说,你问的问题取决于很多背景——在工程领域通常没有灵丹妙药。

希望对您有所帮助!