当前位置

扩充内存容量,将缓存文件、交换文件、临时文件转到内存

James Qi 在 2011年5月7日 - 20:12 提交
内容摘要: 在换用16核CPU、16G内存的服务器后,发现7200转硬盘不给力,就增加了多块10000转的迅猛龙硬盘,一台服务器上的4块硬盘分别放置系统及备份文件、Squid缓存文件、MySQL文件、Apa......

  在换用16核CPU、16G内存的服务器后,发现7200转硬盘不给力,就增加了多块10000转的迅猛龙硬盘,一台服务器上的4块硬盘分别放置系统及备份文件、Squid缓存文件、MySQL文件、Apache和HTML缓存文件,这样一般访问都不会有什么压力。

  但在我们持续导入数据、批量修改模板的过程中,发现放置Squid缓存文件的硬盘有时占用达到100%,影响正常访问,于是我们修改Squid设置文件,只使用几个G内存作为Web反向加速的缓存,关闭了几十G、上百G的Squid磁盘缓存,这样可以避免大量小文件的寻道操作。

  接下来又发现系统盘也偶尔发生占用100%的情况,这时更是影响服务器上所有网站的访问,先以为是交换内存(Swap)的问题,用swapoff -a关闭了所有磁盘交换文件。

  但这样的情况下竟然还是有问题,再检查,发现是MySQL的临时文件引起的,MySQL的查询、排序等操作中需要用到大量的临时文件,默认使用Linux的系统临时文件夹/tmp来保存,这就是瓶颈所在了。找了一些资料,可以修改my.ini中的tmpdir设置,让临时文件放置在多块硬盘上,还可以设置到内存文件系统(tmpfs)中,检查我们机器中启动时默认就有/dev/shm/这个最大可以用物理内存一半容量的内存文件夹,于是就设置tmpdir=/dev/shm/来充分利用内存,跳过硬盘,读写速度应该高出几个数量级。

  Squid缓存文件、Swap交换文件、MySQL临时文件都停掉或者转到内存后,现在的16G内存也不算很富裕了,上周就和同事商量添加内存的事情,原计划把服务器内存加满到64G,但这种DDR2 主频 663 带有ECC REG校验的服务器专用内存目前价格还比较高,3台服务器加满需要近2万元,都可以新购两台服务器了,考虑先还是将其中2台增加到32G,1台保持16G,看看改善的效果,以后再逐步增加。

  已经在淘宝上购买了8根4G专用内存,下周初同事安装到服务器上去,然后再修改一些设置,争取让服务器硬件不成为我们不断增加数据的障碍。今年准备在去年上千万页面的基础上,还要增加到上亿的数量级。

评论

-- 发自IP地址: 192.168.0.133 (位置 | 谁是)

SSD小文件寻址用时几乎为零

专门用作缓存文件储存不好么?

----------------------------------

而且四块硬盘也可以做RAD(不怕丢失数据就做0,怕的话5或者10?)

单独分开成四个分别放效率太低了!

现在16$/month 的VPS都是RAD10+万转硬盘

-- 发自IP地址: 192.168.0.133 (位置 | 谁是)

谢谢这位朋友的留言建议,说的很好、很专业!

先前我们考虑过SSD,但因为容量小、价格高、寿命短等原因,暂时还没有实施,而是添置了2块300G的万转硬盘。我们现在机器中的4块硬盘是2块7200转的1T硬盘和2块10000转的300G硬盘,做起RAD起来怕是不合适,另外就是暂时不想停机重装系统、导数据,所以就这样先凑合着用,以后合适的时候再改为你建议的RAD并添加SSD。

James Qi / 祁劲松

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符