池大小应该与工作者,进程和线程有什么关系?

时间:2017-01-17 00:55:38

标签: ruby-on-rails multithreading heroku connection-pooling puma

以下是否正确?

dyno / worker和process是一回事。

网络服务器Puma可以为应用程序分叉多个dynos / worker /进程。

在较低的抽象级别,每个进程都有多个线程(至少在像Puma这样的多线程网络服务器中?)。在Rails 5中,默认设置为5个线程(/config/puma.rb)(另外,什么决定了一个好的线程数?

这些线程中的每一个都可以一次处理和响应一个请求,如果与数据库交互,则必须具有读写连接。

每个线程在任何时候最多只有一个与数据库的连接,而池(/config/database.yml)只是与数据库连接的缓存(因此线程可以更快地获取连接?)。

因此,池所需的最高值是进程数(dynos)乘以每个进程的线程数,同时保持小于或等于数据库的最大连接数?

每个dyno / worker / process或整个应用程序的池大小设置是?如果每个进程,那么池应该与一个进程上的线程大小相同,而不是所有进程的时间?

谢谢!

0 个答案:

没有答案