1
shiny 2013-11-22 20:40:39 +08:00
有没有装 apc 这类的扩展?
估计 io 是瓶颈,不来点激进的可能还真解决不了。 |
2
richiefans OP @shiny apc装了的 但是貌似解决不了这个
|
3
rwx 2013-11-22 20:45:49 +08:00
把数据分拆成多个小文件按需读取吧,不可能每个请求都需要全部数据吧?
文件缓存对于小数据临时用用还成,一但上了M就是噩梦了,还不如用专门的缓存解决问题来的方便。 |
4
richiefans OP @rwx现在在考虑 如果把这大文件放到memcache里面呢?不过好想memcache有1mb的限制
|
5
rwx 2013-11-22 20:54:17 +08:00 1
@richiefans memcache开启压缩的话倒也有希望放下,不过真的不考虑拆分吗?就算放memcache也不能直接一个key全load出来吧?
如果一定要这种模式的话,还是redis吧 |
6
richiefans OP |
7
rwx 2013-11-22 21:01:21 +08:00
@richiefans 唔。。最起码redis应该能在一个key里面放下这么多数据
不过呢,无论什么样的编码格式,从redis里读数据的IO和解码生成变量,所用的时间都不会比文件缓存更低。。 我以前一个项目就是比较了这些之后,还是拆成了无数个小文件缓存。。 |
8
richiefans OP @rwx,刚才简单hack了一下代码,发现多几个查询都要比这样读取大cache 性能好很多
|
9
yangqi 2013-11-23 00:49:58 +08:00
cache这么大,还是file based,就失去cache的意义了吧。如果设计上没法改变,那至少应该都放到内存里
|
10
akira 2013-11-23 08:52:21 +08:00
拆分吧,你迟早要做这个事情的。
或者把数据都丢mc/redis里面,需要的什么数据就取什么数据,而不是全部取出来。 |
11
opennet 2013-11-24 09:19:50 +08:00
我也遇到了这个问题,使用的文件缓存,等到了10M左右后,还真不如从MYSQL里直接读取的快。
|
12
richiefans OP |
13
opennet 2013-11-24 09:39:56 +08:00
@richiefans 小的全局文件仍然使用文件缓存,其他的还是从mysql里直接读取,试过APC用户缓存和memcahce,好像对我现在的业务没有任何改变。
|