首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务于大量图像的软件/系统?

服务于大量图像的软件/系统?
EN

Stack Overflow用户
提问于 2009-11-24 08:30:51
回答 2查看 302关注 0票数 1

在我们的高峰期,我们需要提供大约250/rps的服务。我们正在做的是接受一个图像的url,从memcache中取出图像,然后通过Apache返回它。

我们当前的系统是一个双核机器,内存为4 4GB :2 4GB用于memcache中的图像,2 4GB用于Apache;但是在我们的高峰期,我们看到非常高的负载(20-30)。根据Apache的报告,每个请求的平均响应时间为30-80ms,对于从内存处理的简单Apache请求来说,这似乎有些慢。

有没有更好的工具来解决这个问题呢?从磁盘提供服务不是一个选项,因为IO等待会阻碍它,所以我们将其移到内存中。CDN是怎么做到的?

编辑:嗯,系统是这样工作的。一个请求进来了,我们检查一个“队列”,看看我们以前是否见过这个请求,如果有,我们就提供图像(从disk...or内存)。如果不是,我们在memcached队列中增加该请求的计数器,并且有工作机器实际生成映像,然后将其存储回主服务器。所以,当一个请求进来的时候,我们正在检查memcached数据库,如果它存在,那么我们将连接到另一个数据库,用于实际的图像数据库。当图像在磁盘上时,我们发现仅file_exist函数就需要30+ ms才能完成,所以我们将其移动到内存中。如果我们将图像移动到内存磁盘,这是否会加快file_exist的速度,或者我们是否仍然希望进行第一次检查,看看是否应该将图像找出来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-24 13:02:33

你看过nginx吗?

根据Netcraft的说法,在2009年5月,nginx服务或代理了3.25% busiest sites。它也可以serve from memcached

票数 3
EN

Stack Overflow用户

发布于 2009-11-24 10:02:40

根据您的映像的大小,Apache应该可以毫无问题地处理此问题。我们有一个Apache服务2000个请求/秒,响应的平均大小是12K。这台机器有32 so的内存,所以我们所有的内容都被缓存了。

这里有一些调优技巧,

  1. 使用线程 MPM,如 worker,打开很多线程(我们有 256 个)。
  2. 使用 mod_cache 使所有图像都在内存中
  3. 为 Apache 进程分配尽可能多的内存

当您说memcache时,您是指memcached服务器吗?运行memcached会更慢,因为TCP连接上的延迟(即使是环回)比直接内存访问要大得多。

如果你能把你所有的图像都放入内存中,那么RAM磁盘也会有很大帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1787063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档