我想对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)。
以下是一些具体问题:
乘客开发在这里。
“Nginx配置能否进一步改进?”
也许,Nginx有很多杠杆,如果您所做的只是在基准测试中提供已知的有效负载,那么您可以通过Nginx的缓存来严格提高性能。
“它是否正在使用与Passenger应用程序服务器的HTTP / 1.1持久连接?”
不,它使用unix套接字。
“使用动态模块会导致任何性能问题吗?”
不,一旦nginx加载库,对其进行函数调用与任何其他c ++函数调用相同。
“我是否还需要做任何其他工作来最大限度地提高集成工作的效率?”
您可能希望了解Passenger的turbo缓存和/或nginx缓存。
“我没有设置乘客日志文件以确保日志记录IO不是瓶颈。”
很好,但将日志记录级别降低到0以避免一些处理。
“每个应用服务器使用线程是否有意义?我认为它只与IO绑定工作负载相关。”
不确定你的意思,你在谈论Passenger的多线程支持还是nginx?
“如果我将处理器与8台应用服务器挂钩,那是否表示有足够数量的服务器?”
如果您受CPU限制,那么添加更多进程将无济于事。
“Nginx + Passenger和Passenger Standalone之间的预期性能差异是什么?”
并不多,Passenger standalone在内部使用nginx。如果您使用带独立乘客的内置引擎,您可能会看到一些改进,但这意味着您不能使用更重要的缓存。