为了解决项目中的稳定性问题,
最近一个月努力加班加点,就是想要一个稳定的结果;主要做了如下工作:
1、捕捉和编码中断计数的添加:解决了原先可能存在的编码或捕捉失效之后,系统无作为的现象,此时添加了两者的计数检测,以便于失效后迅速重启系统;
2、ntp对时出现高cpu:在ntp线程中由于localtime的不安全性存在偶然的可能,得出一个不正确的struct tm然后再使用它时会导致高cpu,解决方法是全部换成localtime_r函数;
3、io alarm频繁报警:重新写了io触发检测线程,把原来检测电平跳变,改为检测电平有效值,修改配置文件,默认不报警;
4、ipmask设置线程的改善:发现原来在arp线程中存在重复设置ipmask的动作及偶尔也导致高CPU,稍作优化时让ipmask线程设置更合理;
5、app正常重启可能存在死锁的问题:解决了重启app时,共享buffer清除时可能存在的死锁问题;
6、在重启的地方添加了大量日志,并改写了moniror工具,让其可以监视所有指定进程的所有线程cpu情况,并在必要时写日志记录,便于现在和将来对问题定位;
7、添加了三星项目中的在创建子进程时的close-on-exec的fd属性;
经过一番努力批量拷机和问题抓取,修改,调试,最终经过验证,对24台机器进行批量拷机,循环连接等测速,最终系统稳定下来,目前除一台硬件电源不稳定的机器之外,其他都比较稳定。