纯静态的服务器,高读写导致 io 居高不下,很多静态文件都要过很久才能打开,而服务器 64G 内存实际占用了 1G 左右,有没有方法利用内存缓解一下 io ?
1
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 也有类型的功能。 |
2
realpg 2020-03-03 11:03:00 +08:00
你静态文件总量多大?
|
3
Lax 2020-03-03 11:06:37 +08:00
写入也多?
|
4
xsir2020 2020-03-03 11:10:31 +08:00
nginx + redis 静态文件缓存命中就直接从 redis 里面取,速度会快很多。
|
5
fancy111 2020-03-03 11:16:45 +08:00
静态转动态,读入缓存。
|
6
qwerthhusn 2020-03-03 11:17:57 +08:00
|
7
dusu 2020-03-03 11:20:31 +08:00 via iPhone
I/O 高不一定是读文件的问题
也有可能是文件数量多导致 |
8
encro 2020-03-03 11:33:30 +08:00 1
当然可以,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 用在了哪里? |
9
sockpuppet9527 2020-03-03 13:22:12 +08:00
小文件 + nvme 盘 可以看看 spdk。
|
10
hankai17 2020-03-03 18:39:32 +08:00
小文件多 那就上缓存
|
11
dorothyREN 2020-03-03 20:29:04 +08:00
把静态文件直接扔到 /dev/shm 下面
|