关于服务器设置的永恒辩论之一是用于服务动态Web应用程序的多服务器和单服务器配置。
这个脚本。
关于测试条件的备注
这些条件是Apache&mod_wsgi.
配置以优于nginx,apache&mod_wsgi.
配置。查询非常轻便(适用于具有较少工作线程的服务器),它们非常快(再次为Work Winters更少的服务器良好)。
这些条件应表示完美的风暴单个服务器设置以优于多服务器方法。
结果
最初,我选择评估每秒交易的结果。一个简短的结果是解释为什么这是一个相当沉闷的主张。
客户 |
配置 |
交易/秒 |
75. |
nginx,apache,mod_wsgi调试?真实的db?错误的 |
16.66 |
75. |
Apache,mod_wsgi调试?真实的db?错误的 |
17.16 |
75. |
nginx,apache,mod_wsgi调试?假数据库?错误的 |
15.68 |
75. |
Apache,mod_wsgi调试?假数据库?错误的 |
16.27 |
75. |
nginx,apache,mod_wsgi调试?真实的db?真的 |
17.22 |
75. |
Apache,mod_wsgi调试?真实的db?真的 |
16.43 |
在交易/秒之方面,配置的差异(和启用调试,并击中数据库)几乎没有影响。回到绘图板。
我的第二种方法是将时间经过的时间进行比较所有请求。遗憾的是,每秒经过的时间和事务由重叠数据计算,因此两个设置之间的差异基本相同。有时多服务器设置优于单个服务器性能。有时单个服务器设置优于多服务器性能。什么都没有得出决定。
这一趋势遍历全部由负载测试记录的各种指标。也许通过平均三次运行而不是采取最佳价值,可以实现更多不同的数字。也就是说,甚至在这些条件下痴迷地寻求两者之间的偏好,只会以一种方式发现最小的偏好。对于将性能视为难题的人 - 而不是拼图本身的人 - 这种数据点的值几乎没有发生。
我很奇怪地看到这些测试复制和完成了越来越有趣的比较(nginx和`mod_wsgi
与nginx和fcgi与apache和apache和mod_wsgi.
等等),甚至可能甚至这个实验甚至在我表现出一些恶意的错误时重复,这些数字是以某种方式失效的。
暂时,我的结论是为了在良好的条件下为动态内容提供服务,性能大致相当于单个和多服务器设置。
原始数据
可以在此处下载原始数据以CSV格式。
以下是我用于将数据隔离在一个度量标准(并发,时间才完成等)中,从三个等价运行中选择最强的值,然后吐出一个CSV文件。
进口CSV鳍=打开('结果.csv'那'r')博士=CSV。Dictreader.(鳍)结果=[]场地='并发'#'交易率'尽管真的:尝试:测试=[博士。下一个(),博士。下一个(),博士。下一个()]测试。种类(lambda.一种那B.:CMP.(一种[场地],B.[场地]))测试=测试[-1]概括={}概括[场地]=测试[场地]。分裂('')[0.]概括['客户']=测试['用户']去世=“%S.调试?%S.D b?%S.“%(测试['config'],测试['debug_on'],测试['use_db'])概括['描述']=去世结果。附加(概括)除了终止:休息鳍。关闭()纠纷=打开('cleaned.csv'那'W')领域=结果[0.]。钥匙()领域。种类()Field_dict.={}为了场地在领域:Field_dict.[场地]=场地作家=CSV。dictwriter.(纠纷那领域)作家。写作(Field_dict.)作家。作者(结果)纠纷。关闭()