设为首页 收藏本站
查看: 519|回复: 0

[经验分享] sphinx遭遇sql_range_query: MySQL server has gone away错误

[复制链接]

尚未签到

发表于 2016-10-22 09:05:53 | 显示全部楼层 |阅读模式
Coreseek一直运行的好好的,但最近有些搜索不到了,重建次索引也不行。
仔细查看了运行提示,如下

Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2010,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file '/usr/local/coreseek/etc/csft.conf'...
indexing index 'hx_line'...
ERROR: index 'hx_line': sql_range_query: MySQL server has gone away (DSN=mysql://root:***@localhost:3306/hx_db).
total 302579 docs, 14798361 bytes
total 33.659 sec, 439652 bytes/sec, 8989.49 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 242 writes, 0.572 sec, 1021.9 kb/call avg, 2.3 msec/call avg


错误提示是这个:

sql_range_query: MySQL server has gone away

在SE中搜索未果,看来没人碰上过这问题啊!
我是有使用sphinx的分区查询功能,设置了sql_range_step和sql_ranged_throttle。尝试调整这两个参数运行,但都不行。
每次都是索引到30w的文档时,卡住约10多秒,然后就显示上面的内容了。
想到我的mysql的配置有设置超时时间,应该是这个配置影响了它吧。

wait_timeout=8
interactive_timeout=8

在csft.conf中,加入

sql_query_pre= set session wait_timeout = 60;
sql_query_pre= set session interactive_timeout=60;

后,运行bin/indexer hx_line --rotate

同样运行到30w之后,停住了约十几秒,然后又继续了:)
问题解决了!
那么为什么运行到30w时会卡住呢?猜测是我设置的mem_limit=512M的问题,难道是设置太小了?再仔细看了文档,找到答案了

mem_limit 索引过程内存使用限制.可选选项,默认 32M. 这是 indexer 不会超越的强制内存限制.可以以字节,千字节(以 K 为后缀)或兆字节(以 M 为后缀)为单位.参见示例.当过小的值导致 I/O 缓冲低于 8KB 时该限制会自动提高,此 值的最低限度依赖于待索引数据的大小.如果缓冲低于 256KB,会产生警告. 最大可能的限制是 2047M.太低的值会影响索引速度,但 256M 到 1024M 对绝大多数数据 集(如果不是全部)来说应该足够了.这个值设得太高可能导致 SQL 服务器连接超时.在文档收集阶段,有时内存缓冲的一部分会被排序,而与数据库的通信会暂停,于是数据库服务器可能超时.这可以通过提高 SQL 服务器端的超时时间或降低 mem_limit 来解决.


原来居然是因为mem_limit这个值设高了。。。!在文档收集阶段,有时内存缓冲的一部分会被排序,而与数据库的通信会暂停,所以看到了运行到30w时卡住的情况,然后化了十几秒,超过了我设置的8s的限制,所以报MySQL server has gone away了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-289670-1-1.html 上篇帖子: Java程序调用系统命令进行mysql数据库的备份与还原(方式二) 下篇帖子: How To Set Up A Load-Balanced MySQL Cluster
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表