我正在运行一个沉重的实时更新网站。 每个用户所需资源的数量是相当高的,生病给你一个例子。
build立
每次访问
应用程序是PHP / MySQL所以每次访问静态和dynamic内容加载。
资源:apache,php,mysql
每一秒 (不超过一秒钟就会太长)
该网站需要实时更新,所以每秒都有一个Ajax调用即时更新网站。
资源:jQuery,apache,php,mysql
单用户平均消费 (花费1分钟,访问3页)
优化
我想优化这个过程,但是我认为最后也许会是一样的。
在实施和testing(这将需要数周)之前,我想从你们那里得到第二个意见。
每次访问
我想首先让nginx在前面,并作为代理来传递静态内容。
的recources:
这将在Apache上传播负载很多。
每一秒
对于每秒加载的脚本,我想在前面用nginx设置Node.js服务器端的JavaScript。
我想设置它,jquery发出请求一分钟,并且node.js每秒将数据stream到客户端。 资源:jQuery,nginx,node.js,mysql
单用户平均消费 (花费1分钟,访问3页)
问题
正如您在优化中所看到的,来自Apache和PHP的负载被解除并放在nginx和node.js上。 这些以轻盈的脚印和良好的performance而闻名。
但我有我的疑惑,因为仍然有2个程序额外加载在内存中,他们消耗CPU。
所以有更less的工作,或更多的程序,更好。 在我花很多时间设置这个之前,我想知道这是否值得。
这里有一些提示可以帮助你。
请注意,同一个可执行文件或共享库的多个副本的代码段共享。 这意味着,即使你执行了50次PHP执行,PHP可执行文件只能从磁盘上读取一次,而且只能在内存中出现一次。 每个执行都有自己的数据段,但无论您如何在多个程序中传播数据,都必须进行。
所以如同许多优化问题一样,答案是“视情况而定”。 找出具体问题的最简单方法是使用中等到重负载下的configuration运行几个基准testing,然后比较总CPU /内存/磁盘/networking负载。