


| | 你的位置:
商务应用>
服务器硬件>
通用技术>
你的服务器硬件需要升级吗?·
shawn·
天极网商务应用频道
1 2 3 4 5 6 7 下一页 当系统性能几乎无法满足需要时,优化是关键
不少人都对我们的服务器如何应付巨大的网络流量感到好奇。我决定花点时间来解释一下我们的互联网应用程序的数据对象缓存机制,数据对象缓存如何能够在不影响为真正的动态内容服务的同时,提高系统性能。我将从去年12月4日收集到的一些统计数字开始。
我们的服务器在那天总共接受了590,000次请求(点击),其中包括了超过250,000次的网页请求。请求的峰值为每分钟667次,其中当然包括了对所有内容的请求(图片,网页,文件,等等)。而纯粹的文字网页请求的峰值为每分钟235次。也许这些统计中给人最深刻印象要算下面这个:在遭遇请求高峰的时候,我们的Java互联网应用程序(包括HTTP服务器)仅仅占用了20%的可用CPU时间,而所有文章请求都在4毫秒内完成。进一步的说,我们的数据库仅仅占用了7.5%的CPU资源。所以,当系统每秒钟大约处理11次请求的时候,75%的CPU资源都是空闲的。让我们来看看那天的网络流量图:(基于每秒钟)

在上图中,我们有两组完全不同的数据。第一组是请求,实质上就是所有向服务器上请求的内容 - 图片,动态网页,静态网页,等等。第二组是文字网页,就像这一页。正如你们看到的那样,Slashdo网站的第一次访问高峰出现在1:30 AM。还有其他形式的动态网页,如网站首页或者论坛的讨论板,这些动态网页都没有包含在这篇文章的讨论范围内,不过无论如何,上图还是能让你对文章网页(文字型)和其他类型网页的访问比率有一个清楚的认识。从传统意义上说,动态内容的网页常常是互联网服务器上的最密集类型的网页之一。但你从下面的这个图表中就可以看到,并不是每次都是如此。

在这幅图里,我们看到了Java互联网应用程序和数据库软件的CPU占用率,按分钟计算,并和每分钟的文章请求数相关联。这里你可以看到我在前面提到的大约在9:30到10:00AM之间发生访问高峰。你还会发现互联网应用程序和数据库软件的CPU占用率都很低:Java程序为14%,数据库为6.9%。Java应用程序的51%的CPU占用率峰值发生在一开始,并仅持续了很短的时间,因为那个时候程序正在缓存需要的网页内容(网站访问开始达到高峰)。你还会发现偶尔的数据库CPU占用率的峰值出现,这是因为缓存了数据会周期性地被更新的缘故。当你想到现在还有一些服务器当遇到这种水平的网络访问量的时候就会当机,甚至崩溃,我们的这台550MHz单处理器服务器的CPU占用率维持在平均21%的水平上已经算是不差了。
我们监视并收集了我们服务器相当部分的组件性能的统计数字。因为有了Solaris操作系统的硬件性能计数器(counter),我们能够监视一定数量的CPU层的统计数字,包括平均每条指令所需的时钟循环数,总线占用率,指令分支错误预测比率,cache miss比率,等等。因为要和我们收集到的其他性能数据一起处理,这些统计数字按每秒的间隔收集的。

上图就是服务器CPU的data cache miss(dcm数据缓存命中失误),instruction cache miss(icm指令缓存命中失误)和L2 cache miss(ecm L2缓存命中失误)比率,包括了2002年12月4日的服务器性能数据,按每秒的间隔收集。因为这幅图比较“拥挤”,我们添加了一些趋势线来增加可视性。除开有些偶然的最低和最高数据,整天的miss rate保持在一个比较稳定的水平。别忘了虽然网络流量不小,但整体CPU占用率还是保持在较低的水平。
>>下一页:有效提高峰值负荷性能1 2 3 4 5 6 7 下一页 |
|