我想对Nginx + Passenger进行基准测试,并且想知道在接下来的nginx.conf
中是否可以进行任何调整以提高吞吐量和减少延迟。它运行在具有16GB主内存的4核i7(8个硬件线程)上。
load_module /usr/lib/nginx/modules/ngx_http_passenger_module.so;
# One per CPU core:
worker_processes auto;
events {
}
http {
include mime.types;
default_type application/octet-stream;
access_log off;
sendfile on;
keepalive_timeout 60;
# 8 should be number of CPU threads.
passenger_root /usr/lib/passenger;
passenger_max_pool_size 8;
server {
listen [::]:80;
server_name passenger;
root /srv/http/benchmark/public;
passenger_enabled on;
passenger_min_instances 8;
passenger_ruby /usr/bin/ruby;
passenger_sticky_sessions on;
}
}
我正在将wrk
用于多个并发连接(例如100)。
以下是一些具体问题:
答案 0 :(得分:2)
客运开发人员在这里。
“可以进一步改善Nginx的配置吗?”
Nginx可能有很多杠杆,如果您所做的只是在基准测试中提供已知的有效负载,那么您可以使用Nginx的缓存来严重提高性能。
“是否正在使用与乘客应用程序服务器的HTTP / 1.1持久连接?”
不,它使用unix套接字。
“使用动态模块会导致性能问题吗?”
否,一旦nginx加载了库,对其进行函数调用便与任何其他c ++函数调用相同。
“我是否需要做其他事情以使集成的工作效率最大化?”
您可能想研究乘客的Turbo缓存和/或Nginx缓存。
“我尚未设置乘客日志文件以确保记录IO不会成为瓶颈。”
很好,但是将日志记录级别降低到0,以避免进行一些处理。
“在每个应用程序服务器上使用线程是否有意义?我认为它仅与IO绑定的工作负载相关。”
不确定您的意思是什么,您是在谈论Passenger的多线程支持还是nginx的支持?
“如果我将处理器与8个应用服务器固定在一起,这是否表明服务器数量足够?”
如果您受CPU限制,那么添加更多进程将无济于事。
“ Nginx + Passenger与“乘客独立”之间的预期性能差异是什么?”
不多,Passenger Standalone内部使用nginx。如果您将内置引擎与乘客独立使用,则可能会看到一些改进,但这意味着您无法使用缓存,这更重要。