最大化Nginx请求/秒的提示?
我正在构建一个分析程序包,并且项目要求指出我每天需要支持10亿次匹配。是的,“十亿”。换句话说,每秒持续命中不少于12,000次,最好有一定的爆发空间。我知道我将需要多个服务器,但是我试图在“向其添加更多硬件”之前从每个节点中获得最大性能。 现在,我已经完成了点击跟踪部分,并对其进行了优化。我几乎只是将请求直接保存到Redis中(供以后使用Hadoop处理)。该应用程序是Python / Django,带有用于网关的粗话。 我的2GB Ubuntu 10.04 Rackspace服务器(不是生产机器)每秒可以处理约1200个静态文件(使用Apache AB标记为一个静态资产)。相比之下,如果我将静态文件链接替换为跟踪链接,则每秒仍会收到约600个请求-我认为这意味着我的跟踪器已经过优化,因为它仅比提供相同的静态资产慢2倍反复。 但是,当我以数以百万计的点击数作为基准时,我注意到一些事情- 没有磁盘使用-这是预料之中的,因为我已经关闭了所有Nginx日志,并且我的自定义代码除了将请求详细信息保存到Redis之外不执行任何操作。 非恒定内存使用率-大概是由于Redis的内存管理,我的内存使用率将逐渐上升然后回落,但是这从来都不是我的瓶颈。 系统负载徘徊在2-4左右,即使在我最重的基准测试期间,系统仍然可以响应,并且我的(其他)服务器每执行600个请求时,我仍然可以手动查看http://mysite.com/tracking/pixel,几乎看不到延迟。第二。 如果我进行了一次简短的测试,比如说50,000次点击(大约200万次),那么我每秒就会收到600个稳定可靠的请求。如果我运行更长的测试(到目前为止尝试了3.5m),我的r / s会降低到250。 我的问题- 一种。看起来我要用尽这台服务器了吗?1200个/ s静态文件的nginx性能是否可与其他人媲美? b。是否有针对此类高容量应用程序的常见Nginx调整?我将工作线程设置为64,将gunicorn工作线程设置为8,但是调整这些值似乎对我没有多大帮助或伤害。 C。是否有任何Linux级别的设置可能会限制我的传入连接? d。在长时间运行的测试中,什么会导致我的性能下降到250r / s?同样,在这些测试过程中内存没有达到极限,并且HDD的使用为零。 在此先感谢,所有:) 编辑 这是我的nginx配置-http: //pastie.org/1450749-它主要是香草,有明显的脂肪被修剪掉。