问题描述
网站允许用户上传自定义头像,上传照片,这些图片普遍不大,处理后在10K~50K之间。粗略统计了下网站90%图片的图片体积在10K到50K之间,目前网站有5w多张图片,总的体积有1.5G左右。 当然网站弄了台专门的图片服务器,可是当图片并发请求大的时候,通过性能监控工具发现 请求磁盘 太过频繁,磁盘非常繁忙,而CPU,网络倒是能应付,图片的响应就有点慢了,我想图片响应缓慢,系统的瓶颈应该在磁盘方面了。服务器内存可供使用的资源还有8个G左右,能否在不升级系统硬件,优化程序来提高大并发请求情况下,提升图片的响应速度。
解决方案
使用NIO,将文件先映射到内存在处理吧
解决方案二:
频繁的访问磁盘,你不加硬件的话,还要提高性能,那么只能降低磁盘的访问,如何降低呢。估计也只能用缓存,把访问量大的图片都读取出来放到缓存中。建议是往缓存方向考虑。你有8个G呢。
解决方案三:
不知道你的图片server使用的是什么,建议使用nginx,性能上比apache好了不是一两倍,开启gzip,配置图片缓存。另外代码上也可以做一下控制,比如非第一屏的图片全部做懒加载,用户鼠标滚动到时再加载图片,这样可以减少图片的http并发量。还有楼上说的使用nio,虽然我没使用过,但是感觉思路是对的,即使用缓存。
解决方案四:
一方面降低因请求占用的内存空间大小,另一方面增加图片CACHE的内存容量。
解决方案五:
用个图片服务器看看,也可以试试淘宝的tfs。
解决方案六:
把1.5G图片全部写入内存。。。。
解决方案七:
你好,根据你的问题可以使用浏览器缓存或客户端缓存,具体可以参考:http://www.cnblogs.com/chenzhao/archive/2012/11/25/2787958.html
解决方案八:
squid
解决方案九:
这是:[url]http://blog.sina.com.cn/s/blog_633219970100ykt9.html [/url]
解决方案十:
楼主看看这篇文章,淘宝的图片处理http://blog.sina.com.cn/s/blog_633219970100ykt9.html这个tfs是开源的,在code.taobao.org上能找到
解决方案十一:
nginx缓存squid或者varnish直接云服务
解决方案十二:
1、页面可以使用懒加载,当浏览到图片的时候在加载,类似于淘宝的BigRender的模式,这样可以降低同一时间的并发量,降低服务器的压力。2、如果是图片在网络传输过程中耗时较高,压缩图片传输,通过减小传输数据的大小来提升性能。3、服务器将图片写进缓存中,可以使用MemCache,有效提高后台读写速度
解决方案十三:
换固态硬盘,用Nosql缓存图片。
解决方案十四:
用VARNISH, 缓存到内存, 另外可以用CDN, 根据用户距离来选择最近的服务器
解决方案十五:
1、把图片服务器弄成分布式的,提高并发吞吐量。2、图片服务器是单个服务吗?如果是,可以考虑用apache做一个集群,可以再一台机器上部署多个服务,来提高并发吞吐量。3、换固态硬盘,听说固态硬盘挺快的,具体没用过。