如何configurationnginx从RAM提供静态内容?

我想设置nginx作为我的networking服务器。 我想有图像文件caching在内存(RAM),而不是磁盘。 我正在服务一个小页面,并希望从RAM中总是提供几个图像。 我不希望使用清漆(或任何其他这样的工具),因为我相信nginx有能力caching内容到RAM中。 我不知道如何configurationnginx呢? 我曾尝试过几种组合,但都没有奏效。 nginx一直使用磁盘来获取图像。

例如,当我尝试使用以下命令testingapache基准testing:

ab -c 500 -n 1000 http://localhost/banner.jpg 

我得到以下错误:

 socket: Too many open files (24) 

我想这意味着nginx试图从磁盘同时打开许多文件,操作系统不允许这个操作。 任何人都可以请build议我一个正确的configuration?

一旦服务器从磁盘读取文件,它将被caching到内存(如果您不在内存中,将被replace为不同的文件),问题是与您的帐户限制,您不能打开这么多的文件(运行'ulimit -a'),

如果你想改变这个限制 – 阅读关于/etc/security/limits.conf

如果它是静态内容,那么默认情况下它将被caching在内存中(除非没有剩余内存),而不是nginx,但是操作系统 – 所有将在磁盘上留下的数据将是stat()。

如果你想100%的内存解决scheme,你可以configurationramdisk并从那里提供数据。

所以我知道这是非常古老的,但是,在这里。

  1. Nginx并没有做内存caching,你会想看看这个memcache,我会build议这个openresty包:http://openresty.org/。 你做什么开箱即用(如上面的答案是页面caching)
  2. 这个错误信息,我几乎可以肯定的是,从ab不是从nginx,nginx错误的文件限制看起来像这样“失败(24:太多打开的文件)”。 请记住在UNIX套接字也是文件,所以对于你正在运行AB的用户,需要调整其ulimit为该会话运行AB。 既然你说过你的限制是256,你就是要求ab使用500个连接,这是超出你的极限。

在ram中caching的文件仍然是à文件!

尝试使用nginx的Memcachedcaching模块。 但是,还是有1000个并发连接是巨大的,你认为是你的情况吗?