子进程挂载失败解决方案
来自技术开发小组内部wiki
一些情况下,当后台变价、创建活动、审核票种、票务、活动审核通过后或者创建订单等一系列操作,状态或数据并没有更新,这时候大部分是由于fmb.daemon中的进程已经挂掉或者异常退出了,或者由于逻辑错误导致的,没有正常退出(程序BUG待优化),需要手动去处理。 分以下几个步骤走,最终的更新依赖于单独运行的实例库进行相关操作:
1、登录测试机(192.168.30.225),cd /home/www/fmb.daemon,查看当前的目录是否存在main.pid,如果没有存在就说明进程已经异常退出或者没有被创建,tail -f nohup.out ,如果有异常的进程会提示:pid文件已经存在, 无法再次启动!等。 2、这时候我们需要在目录下执行:/usr/local/php5.3/bin/php jobs.php -m daemon -c stop,理论上执行此命令会自动释放进程,删除main.pid,如果执行完以后没有删除需要手动删除,rm -rf main.pid、 3、cd ~,找到monitor_daemon.sh ,执行此脚本,进行初始化。 4、执行后,需要手动去以nohup的方式挂载jobs任务, nohup /usr/local/php5.3/bin/php jobs.php -m daemon -c start >> /home/www/fmb.daemon/cron3.log 2>&1 & ,这个时候,任务会自动转到系统中执行,(nohup可以去看下实现原理) 5、回到项目目录,tail -f redis_log.txt,查看是否有队列推送,如果有队列推送并且查看cron3.log的处理,如果处理有日志输出表示已经挂载\上。 6、通过ps aux|greo jobs查看任务线程数,默认目前开启4个workernum