Memcached会在这种情况下提供帮助吗?

我在一个大型互联网站点工作,人们可以分享大量的文字。 我们将大部分信息存储在InnoDB数据库中,但实际的文本片段存储在基于文本的文件中。 这些基于文本的文件在几个KB到10MB之间不等。 有数以百万计的这些文件,我们已经build立了一个良好的文件夹/文件结构,以便从来没有太多的文件在一个文件夹。

networking服务器(数据库是另一个),这些文件存储是一个function强大的机器与RAID10 4个15k SAS驱动器,并有24GB RAM。 我们运行Nginx作为Web服务器和Xcache来加速PHP。 这一切都是完美的,负载通常在0.7到1.5之间变化。

现在,我只打算使用Memcached来存储“基于文本的”文件。 所以每当有人要求页面加载这些“基于文本”的文件时,不必从磁盘读取它们。 在PHP中,我使用file_get_contents(); 将“基于文本的”文件加载到variables中,然后在页面的某个地方显示。

我的问题是,它真的会降低你认为为这个特定function实现Memcached的负载,还是Linux已经有一些内部文件caching本身,当我经常通过file_get_contents请求某个文件时使用?

显而易见的答案是,您必须在特定的情况下自己testing各种选项。

也就是说,Linux使用所有可用的RAM作为磁盘caching,但只要它不用于其他更重要的目的。

我猜想从磁盘读取一个小文本文件(或者从caching的RAM中读取stream行的文件)会比和memcached进行对话更快。

你必须testing一下,但要记住,Linux非常积极地caching文件和目录结构,所以很可能你已经从RAM中提供了大部分内容。

您是否在您的Web服务器上观察到沉重而缓慢的磁盘I / O?

我假设你有munin来监视服务器统计信息(通过iostat / vmstat)。 所以你可以检查你的系统是否使用了大量的磁盘IO。 如果是这样,那么系统在高速caching中效率不高。 如果您提供的页面大多是静态内容,则可以检查清漆 。

另外看看Linux-ftools。 这正是你所需要的,当你想修补系统级文件caching。 一探究竟