您的位置:首页 > 运维架构 > 网站架构

大内存加速网站应用方案

2012-07-13 09:27 246 查看
一台装了8GB或以上内存的IBM3650 M3的网站服务器,运行Windows2008(64位)之后才使用了1.2GB左右的内存,运行了TOMCAT与mysql 服务之后最高也才达到3GB之多。其中tomcat最高使用1G,就算程序上再优化(包括数据库的优化),这台服务器所能提供的有效链接数与响应时间便被固定下来。在同等网速客户访问量持续性增加的情况下,客户打开网站只会越来越慢。网站的特性是小而密集的文件在磁盘中被反复读取提交给客户,在网速这个有限资源被固定的情况下,提高文件的读取速度是加速网站的响应速度是关键点。怎么样利用闲置的5G内存,下面是已知的两种解决方案:

1、将部分内存虚拟成硬盘。这样一来系统中将会出现一个读写速度非常快的分区。将部分应用程序安装在虚拟硬盘中之后,启动这些应用程序的速度会有非常明显的提升,但是对整个系统的性能影响并不大。不过现在的虚拟硬盘软件也支持在关机时将虚拟硬盘中的数据写入镜像,不会再出现关机即丢失数据的情况。这种方案目前也有一定的局限性——目前的虚拟硬盘软件只能创建容量在4GB以内的虚拟硬盘。
2、将内存虚拟成磁盘缓存,为硬盘分配内存作缓存,并拦截系统发送至硬盘的IO请求。如果IO请求读取的数据已经在缓存中,则直接读取缓存中的数据并完成IO请求,否则数据则从硬盘中读取出来,并存入缓存,同时完成IO请求。由此可见,从缓存读取的数据量越多,则系统性能提升得越多,避免频繁读取速度较慢的硬盘,从而提升系统性能。
而我们采用两种结合的方案,既有一个虚拟硬盘来放置网站程序又有一个整盘缓存来加速系统,如图:





实现方法:
第一步:采用VSuite Ramdisk这款软件来实现大内存的硬盘虚拟。这类软件都是通过独特的算法,将内存虚拟成硬盘,使得对硬盘文件的数据读写转化为对内存的数据访问,大幅提高数据的访问速度,这对于频繁通过网络交换大容 量文件的用户尤其有帮助。新版的VSuite Ramdisk提供镜像功能,支持关机时自动保存数据到镜像文件以及开机时自动从镜像文件加载数据到虚拟硬盘,可以避免原来那些内存虚拟硬盘软件造成数据 在关机时丢失的问题。而且VSuite Ramdisk还具有检测和利用系统未识别内存的功能,可以解决32位Windows操作系统无法完全使用4GB或更多内存的问题。

配置如下:





注意:一定要把镜像文件保存在物理硬盘分区上,不然关机后文件会丢失。

分区对比测试:
1、 物理分区





2、 虚拟硬盘





可以看到虚拟硬盘的读取速度比物理的快了近10倍!
随机读取测试:
1、 物理分区





2、 虚拟分区





从IOPS上看到小文件的随机读取有近百倍的差距!

第二步:采用将内存虚拟成硬盘缓存来使用了。我们采用
FancyCache把从硬盘中读取的数据存入系统内存,使系统在下次访问该数据时可以很快从内存中读取,而且FancyCache还支持将其他磁盘虚拟给硬盘作为二级缓存。
配置如下:





可以在性能监视中看到缓存命中率:





在同一业务下,系统运行时间越长命中率越高,从而网站的响应速度越快。本文出自 “kras-linux” 博客,请务必保留此出处http://klinux.blog.51cto.com/2972664/929612
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: