我正在运行一个Ruby on Rails应用程序,我使用Passenger Nginx,Ruby on Rails 3.2,searchgem Sunspot(使用Solr作为search引擎)。 我的应用程序可以与大约6K的活跃用户一起工作,但是当像15K活跃用户那样的stream量飙升时,它的速度是不可接受的。 我检查了newrelic日志,看到I / O使用情况,但我不明白。

你可以看到“写”远远超过“读”。 我不明白这是因为大多数用户正在使用GET请求,这与阅读行动有关,我猜。
如果您的问题是与日志写入相关的(按照David的build议),那么可以通过启用access_log写入的缓冲并使用即时的gzip压缩(以及缓冲),在较新的nginx中轻松解决此问题,或者,或者,使用像zfs这样的文件系统,可以自动执行这些操作,而无需您的参与。
access_log /path/to/log.gz combined gzip flush=5m;
或者,你的问题可能与nginxcaching的工作方式有关(具体来说,是proxy_buffering on;默认的proxy_buffering on;等等)。
Nginx可以通过文件系统进行caching,因此,它可能会对光盘进行各种写入操作(可能会或可能不会显示为读取操作,因为根据实验方法的不同,读取后的读取操作很可能是基于内存的,提供服务)。
根据你的资源,你可以考虑设置一个基于内存的光盘作为缓冲你的东西的目录。 否则,你也可以考虑在你的nginx之前设置清漆 – 清漆通过虚拟内存子系统进行所有的caching。
大部分GET请求都是从内存中提供的。 但是,写日志可能会导致I / O,因为日志通常是行缓冲的,每个日志条目通常是一行。