将Sphinx的日志放置到/dev/shm里需要注意的事情
2024-08-22 08:15:42
可以采用定时器控制,清空日志的办法:
几种快速清空文件内容的方法:
$ : > filename #其中的 : 是一个占位符, 不产生任何输出.
$ > filename
$ echo “” > filename
$ echo /dev/null > filename
$ echo > filename
$ cat /dev/null > filename
但是,日志是有一定作用的,比如下面是个例子:Sphinx重建索引失败安例分析
重建Sphinx索引的时候,可以使用以下命令: /sphinx/bin/indexer –rotate idx_name
但是这个命令并不是保证一定能重建成功的,有时候重建了之后,发现新的数据并没有加入到索引里,而从日志可以看到这样的记录: WARNING: rotating index ‘idx_m_tag’: lock: failed to lock /sphinx/data/idx_m_tag.new.spl: Resource temporarily unavailable; using old index
WARNING: rotating index ‘idx_n_tag’: lock: failed to lock /sphinx/data/idx_n_tag.new.spl: Bad file descriptor; using old index
[Sun Mar ::01.084 ] [] rotating finished
日志记录了重建索引失败,继续使用旧的索引这一事实。 要分析这个原因,首先要知道sphinx的重建索引的流程,日志里记录的spl文件,实际是一个空文件,只是sphinx加锁的一个标记而已。重建索引时,会生成新的索引文件,即在原来的文件名字后面加上.new标记为新文件,旧文件不变。然后重启searchd进程,所以我们在执行rotate index的时候会看到这样的输出: rotating indices: succesfully sent SIGHUP to searchd (pid=).
searchd进程启动后,会执行一个操作,把旧文件命名为.old文件,把.new文件更新为正常的索引文件名,如果有问题,会有 一个回滚的操作。在这个过程中,通过对spl这个文件的加锁和解锁来进行文件切换。 如果对spl的锁争用出现问题,就会导致新的索引文件不生效,这时候的解决办法是手动重启searchd进程。 如何避免这个问题,最简单的就是对sphinx日志进行监控,通过脚本捕捉到lock spl文件失败的情况,马上处理。
那么一般如何在运维中关注索引的生成情况呢?
Nagios监控Sphinx的indexer日志 http://os.51cto.com/art/201103/247290.htm
最新文章
- [LeetCode] Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串
- win下sass安装失败的一种可能
- SqlServer数据库端口默认是1433吗?
- iOS App上线的秘密
- 在UIViewController中获得Container View里的embed viewController的引用
- /lib64/libc.so.6: version `GLIBC_2.14' not found问题
- [topcoder]ZigZag
- 蘑菇街IM
- 一道有关球赛队员分配的C++程序题目
- day15 Python函数递归,轻易不要用递归,容易搞出来内存溢出
- C# 队列和栈 线程安全
- [转]经验分享:微信小程序外包接单常见问题及流程
- Windows上使用sqlite3
- [UE4]把工程升级到最新版本
- 遇到的IE不兼容问题总结
- SQLserver和oracle中对应的数据类型
- PowerMock+SpringMVC整合并测试Controller层方法
- JAVAEE——宜立方商城10:使用freemarker实现网页静态化、ActiveMq同步生成静态网页、Sso单点登录系统分析
- 04 Python入门学习-流程控制(if else elif while for)
- webapi 实体作为参数,自动序列化成xml的问题