等风来
文章11篇
 
 
 

sphinx占用大量内存,甚至无法启动怎么办?

王朝干货·等风来  2023-07-10

在sphinx.conf里的source配置项里,使用sql_attr_string时,会使索引文件增大许多,而默认配置会把这些都加载到内存里,导致内存占用过大。(使用sql_attr_string的好处是不用再去查询数据库了。)

解决办法是在index配置项里,加上ondisk_attrs = pool。

在老版本sphinx里是使用docinfo = extern,但在2.2.1-beta版本后docinfo作废了,使用ondisk_attrs来配置存储模式。

ondisk_attrs有3个选项,0、1、pool。

0是默认值,所有内容都加载进内存;1,所有内容都放在硬盘上;pool,string, MVA, and JSON attributes (sps, spm files)等放在硬盘上,数字等加载进内存。

0消耗内存最大(几个G),速度最快(毫秒级);1消耗内存最小(几百M),速度最慢(秒级);pool选项亲测接近0的速度和1的内存使用量,所以没有悬念的选择pool。

下面是官方文档说明:

ondisk_attrs

Allows for fine-grain control over how attributes are loaded into memory when using indexes with external storage. It is now possible (since version 2.2.1-beta) to keep attributes on disk. Although, the daemon does map them to memory and the OS loads small chunks of data on demand. This allows use of docinfo = extern instead of docinfo = inline, but still leaves plenty of free memory for cases when you have large collections of pooled attributes (string/JSON/MVA) or when you're using many indexes per daemon that don't consume memory. It is not possible to update attributes left on disk when this option is enabled and the constraint of 4Gb of entries per pool is still in effect.

Note that this option also affects RT indexes. When it is enabled, all atribute updates will be disabled, and also all disk chunks of RT indexes will behave described above. However inserting and deleting of docs from RT indexes is still possible with enabled ondisk_attrs.

Possible values:

0 - disabled and default value, all attributes are loaded in memory (the normal behaviour of docinfo = extern)

1 - all attributes stay on disk. Daemon loads no files (spa, spm, sps). This is the most memory conserving mode, however it is also the slowest as the whole doc-id-list and block index doesn't load.

pool - only pooled attributes stay on disk. Pooled attributes are string, MVA, and JSON attributes (sps, spm files). Scalar attributes stored in docinfo (spa file) load as usual.

This option does not affect indexing in any way, it only requires daemon restart.

Example:

ondisk_attrs = pool #keep pooled attributes on disk

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有