CshBBrain
CshBBrain
2013-01-29 16:29
浏览 470
已采纳

如何提升网站 遇大并发请求大量小图片时,图片响应缓慢的问题

网站允许用户上传自定义头像,上传照片,这些图片普遍不大,处理后在10K~50K之间。粗略统计了下网站90%图片的图片体积在10K到50K之间,目前网站有5w多张图片,总的体积有1.5G左右。 当然网站弄了台专门的图片服务器,可是当图片并发请求大的时候,通过性能监控工具发现 请求磁盘 太过频繁,磁盘非常繁忙,而CPU,网络倒是能应付,图片的响应就有点慢了,我想图片响应缓慢,系统的瓶颈应该在磁盘方面了。服务器内存可供使用的资源还有8个G左右,能否在不升级系统硬件,优化程序来提高大并发请求情况下,提升图片的响应速度。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

15条回答 默认 最新

  • ll89308839
    ll89308839 2013-01-29 18:01
    已采纳

    使用NIO,将文件先映射到内存在处理吧

    点赞 评论
  • dragona
    dragona 2013-01-29 17:10

    1、把图片服务器弄成分布式的,提高并发吞吐量。
    2、图片服务器是单个服务吗?如果是,可以考虑用apache做一个集群,可以再一台机器上部署多个服务,来提高并发吞吐量。
    3、换固态硬盘,听说固态硬盘挺快的,具体没用过。

    点赞 评论
  • gxz1989611
    gxz1989611 2013-01-30 09:22

    不知道你的图片server使用的是什么,建议使用nginx,性能上比apache好了不是一两倍,开启gzip,配置图片缓存。
    另外代码上也可以做一下控制,比如非第一屏的图片全部做懒加载,用户鼠标滚动到时再加载图片,这样可以减少图片的http并发量。
    还有楼上说的使用nio,虽然我没使用过,但是感觉思路是对的,即使用缓存。

    点赞 评论
  • iteye_3946
    iteye_3946 2013-01-30 09:51

    用VARNISH, 缓存到内存,
    另外可以用CDN, 根据用户距离来选择最近的服务器

    点赞 评论
  • iteye_16124
    iteye_16124 2013-01-30 10:16

    换固态硬盘,用Nosql缓存图片。

    点赞 评论
  • mythsaa
    mythsaa 2013-01-30 10:22

    1、页面可以使用懒加载,当浏览到图片的时候在加载,类似于淘宝的BigRender的模式,这样可以降低同一时间的并发量,降低服务器的压力。
    2、如果是图片在网络传输过程中耗时较高,压缩图片传输,通过减小传输数据的大小来提升性能。
    3、服务器将图片写进缓存中,可以使用MemCache,有效提高后台读写速度

    点赞 评论
  • APieceOfRedCloth
    APieceOfRedCloth 2013-01-30 13:32

    [list]
    [*]nginx缓存
    [*]squid或者varnish
    [*]直接云服务
    [/list]

    点赞 评论
  • iteye_6932
    iteye_6932 2013-01-30 13:56

    楼主看看这篇文章,淘宝的图片处理
    http://blog.sina.com.cn/s/blog_633219970100ykt9.html
    这个tfs是开源的,在code.taobao.org上能找到

    点赞 评论
  • iteye_6932
    iteye_6932 2013-01-30 13:57
    点赞 评论
  • xieye114
    xieye114 2013-01-30 14:05

    squid

    点赞 评论
  • laogao3232
    laogao3232 2013-01-30 15:05

    频繁的访问磁盘,你不加硬件的话,还要提高性能,那么只能降低磁盘的访问,如何降低呢。
    估计也只能用缓存,把访问量大的图片都读取出来放到缓存中。
    建议是往缓存方向考虑。你有8个G呢。

    点赞 评论
  • sunny717
    sunny717 2013-01-30 15:44

    你好,根据你的问题可以使用浏览器缓存或客户端缓存,具体可以参考:

    http://www.cnblogs.com/chenzhao/archive/2012/11/25/2787958.html

    点赞 评论
  • langhua9527
    langhua9527 2013-01-30 16:08

    把1.5G图片全部写入内存。。。。 :lol: :lol: :lol: :lol:

    点赞 评论
  • iteye_10768
    iteye_10768 2013-01-30 16:58

    用个图片服务器看看,也可以试试淘宝的tfs。

    点赞 评论
  • jick86
    jick86 2013-01-30 22:43

    一方面降低因请求占用的内存空间大小,另一方面增加图片CACHE的内存容量。

    点赞 评论

相关推荐