硬盘 io 居高不下, nginx 能利用闲置的内存缓解一下 io 吗?

2020-03-03 10:00:30 +08:00
 kisshere

纯静态的服务器,高读写导致 io 居高不下,很多静态文件都要过很久才能打开,而服务器 64G 内存实际占用了 1G 左右,有没有方法利用内存缓解一下 io ?

2900 次点击
所在节点    程序员
11 条回复
podel
2020-03-03 10:08:35 +08:00
linux 本身就有把内存当错 file buffer 的功能。

total used free shared buff/cache available
Mem: 16262080 5732676 2309932 21392 8219472 10236760
Swap: 0 0 0

buff/cache 就是用内存缓存的文件。windows 也有类型的功能。
realpg
2020-03-03 11:03:00 +08:00
你静态文件总量多大?
Lax
2020-03-03 11:06:37 +08:00
写入也多?
xsir2020
2020-03-03 11:10:31 +08:00
nginx + redis 静态文件缓存命中就直接从 redis 里面取,速度会快很多。
fancy111
2020-03-03 11:16:45 +08:00
静态转动态,读入缓存。
qwerthhusn
2020-03-03 11:17:57 +08:00
dusu
2020-03-03 11:20:31 +08:00
I/O 高不一定是读文件的问题

也有可能是文件数量多导致
encro
2020-03-03 11:33:30 +08:00
当然可以,nginx 开启缓存功能非常强大。分为 4 级:
1,开启客户端 cache,设置 expires 头;
2,开启文件系统缓存,open_file_cache 相关;
3,开启代理缓存,设置 proxy_cache 相关;
4,开启脚本缓存,设置 fastcgi cache 相关;

1,2 参考 https://stackoverflow.com/questions/19515132/nginx-cache-static-files
3 参考 https://www.nginx.com/blog/nginx-caching-guide/
4,参考 https://www.digitalocean.com/community/tutorials/how-to-setup-fastcgi-caching-with-nginx-on-your-vps

附赠思考题:如何查看 IO 用在了哪里?
sockpuppet9527
2020-03-03 13:22:12 +08:00
小文件 + nvme 盘 可以看看 spdk。
hankai17
2020-03-03 18:39:32 +08:00
小文件多 那就上缓存
dorothyREN
2020-03-03 20:29:04 +08:00
把静态文件直接扔到 /dev/shm 下面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/649310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX