以下是否正确?
dyno / worker和process是一回事。
网络服务器Puma可以为应用程序分叉多个dynos / worker /进程。
在较低的抽象级别,每个进程都有多个线程(至少在像Puma这样的多线程网络服务器中?)。在Rails 5中,默认设置为5个线程(/config/puma.rb
)(另外,什么决定了一个好的线程数?
这些线程中的每一个都可以一次处理和响应一个请求,如果与数据库交互,则必须具有读写连接。
每个线程在任何时候最多只有一个与数据库的连接,而池(/config/database.yml
)只是与数据库连接的缓存(因此线程可以更快地获取连接?)。
因此,池所需的最高值是进程数(dynos)乘以每个进程的线程数,同时保持小于或等于数据库的最大连接数?
每个dyno / worker / process或整个应用程序的池大小设置是?如果每个进程,那么池应该与一个进程上的线程大小相同,而不是所有进程的时间?
谢谢!