关于nginx unit服务非正常关闭后,无法重新启动问题的处理
昨天在前领导技术大牛吕哥的帮忙下,python服务管理从nginx+supervisor+uwsgi+python3改为了轻便结构nginx + unit + python3,部署和配置起来顿时轻松起来。服务器配置好以后赶紧上官网http://unit.nginx.org将英文文档全部啃完,全面理解了它的运行原理。
由于nginx unit它的服务重启方式,是自动检测配置文件是否有更改,然后才会自动重载,而python代码发布以后,并没有对配置进行更改,所以昨晚在进行代码更新以后,发现运行的还是旧的程序,和吕哥沟通后他说等他想想解决办法。早上一早就发信息过来并将执行代码发了过来。一看原来是直接kill掉进程的方式,再通过运行服务启动程序来进行重载。
然后我就拿测试服务器实验了起来,在服务器上输入下面命令,将unit进程kill掉
kill -9 `ps -ef |grep unit|awk '{print $2}'`
跟着执行启动服务命令(这个命令的路径,大家安装的位置不同路径是不一样的,替换成自己的就可以执行了)
/usr/local/src/unit/build/unitd
命令执行以后发现先是报下面错误,但服务正常启动了
2018/12/20 11:53:25 [alert] 1299#1299 Unable to create certificates storage directory: mkdir(state/certs/) failed (2: No such file or directory)
2018/12/20 11:53:25 [info] 1299#1299 bind(7, unix:control.unit.sock) failed (98: Address already in use)
进入buile目录下面发现state与certs目录都存在,没有发现有什么问题
输入命令查看服务启动状态:ps -ef | grep unit
检查服务没有启动,解决不了只能输入reboot重启一下服务器,重启后运行服务启动命令还是报同样的错误
2018/12/20 11:54:17 [alert] 1299#1299 bind(6, unix:control.unit.sock) failed (98: Address already in use)
服务直接挂了启动不了......
赶紧上goole和百度查询解决方案,发现没有一篇文章,难道只有我是这么干才会出来这种个问题吗?人品简直是爆炸了
没有办法的情况下,只能自己研究检查了,看看日志有没有什么记录,查看build目录下面的unit.log并没有什么异常记录。在检查的过程中发现build目录下面有个0字节的文件名很可疑,名字跟错误提示中的信息一样:control.unit.sock
感觉应该有可能是这个文件造成的,所以尝试使用删除命令将它删掉,然后再次运行服务启动命令,发现一切恢复正常状态,再次刷新这个文件夹,发现删除掉的这个文件又出来了
通过这样操作的结果,可以判断unit在启动后,它会在build目录创建一个名为control.unit.sock的文件,做为服务锁以防止服务同时启动多个,而当服务被非正常状态关闭时,可能就会引发这个文件没有被同步清除,而导致服务无法正常启动。
除了使用kill方法删除unit进程以外,我还尝试使用reboot直接启动服务器,也试过出现同样的问题,服务启动不了。还好发现这个问题以后积极研究解决了,不然万一线上系统哪一天要重启,导致同样的情况发生而一直无法访问,那就影响大了去了。
版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
python开发QQ群:669058475(本群已满)、733466321(可以加2群) 作者博客:http://www.cnblogs.com/EmptyFS/
关于nginx unit服务非正常关闭后,无法重新启动问题的处理的更多相关文章
- MongoDB非正常关闭后修复记录
启动mongodb时出现如下错误: 根据提示可以知道错误原因是mongodb非正常关闭,此时需要对数据库进行修复.修复命令:mongod --repair 或 ./mongod --repair , ...
- myeclipse非正常关闭处理办法
myeclipse正常或非正常关闭后,再次运行,不显示启动时的logo和读条,进入主页面后程序基本就卡死,无法正常运行,解决办法. 方法一:修改工作空间在刚启动Myeclipse的时候会有一个选择工作 ...
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- windows tomcat nginx session(当一台tomcat关闭后)
在windows下作nginx负载均衡测试. nginx的配置文件如下: worker_processes 1; events { worker_connections 1024; } http ...
- 非正常关闭myeclicps后,出现错误Errors occurred during the build.的解决方法
我的myeclicps是10.7版本由于非正常关闭,在启动tomcat时候出现了问题. 解决法案: 1.关闭myeclicps. 2.打开你的myeclicps的工作空间(workspace自己设置的 ...
- 【转】Android Service被关闭后自动重启,解决被异常kill 服务
http://www.kaifajie.cn/android/10182-2.html 每次调用startService(Intent)的时候,都会调用该Service对象的onStartComman ...
- VMware服务关闭后一定要重启
重要的事情说三遍:服务暂时关闭记得重启,服务暂时关闭记得重启,服务暂时关闭记得重启!!! VMware服务由于安装补丁的需要我暂时把服务关闭了,于是我遇到了尴尬的一幕,于是乎发现上不了网了,于是各种操 ...
- nginx Windows服务形式运行
背景 现在使用ngnix的人越来越多,nginx的优势劣势网上也很多说明.这里就不探讨nginx优势与劣势,每个工具都有自己优势劣势,没有最好的工具,只有最合适的工具. 如何选择适当的工具,根据项 ...
- 八.nginx网站服务实践应用
期中集群架构-第八章-期中架构nginx章节====================================================================== 01. web ...
随机推荐
- 第九周LINUX 学习笔记
基于GTID的mysql主从简单复制 一.简单主从模式配置步骤1.配置主从节点的服务配置文件1.1.配置master节点:[mysqld]binlog-format=ROWlog-bin=master ...
- Windows Server 2016-命令行批量导出AD用户列表信息
本章节为大家带来如何通过Powershell或ldifde命令行方式导出域用户列表信息,方便大家日常运维工作中使用. Powershell方式导出现有Staff目录下所有用户信息列表: Get-ADU ...
- 通信(二):进程间通信之socket
一.为什么要学习socket? 我们打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?我们用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket.本地的进程间通 ...
- Luogu P5292 [HNOI2019]校园旅行
非常妙的一道思博题啊,不愧是myy出的题 首先我们考虑一个暴力DP,直接开一个数组\(f_{i,j}\)表示\(i\to j\)的路径能否构成回文串 考虑直接拿一个队列来转移,队列里存的都是\(f_{ ...
- supervisord 备注
最近项目中使用了supervisord,简单做下备注. supervisord是linux下基于python开发的一个服务管理工具,类似之前node环境下的forever,用该方法启动进程后,supe ...
- iOS开发之Masonry框架源码解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
- Javascript高级编程学习笔记(98)—— WebGL(4) WebGL上下文(2)
错误 Javascript与WebGL之间的一个最大区别在于,WebGL的操作一般不会抛出错误 如果希望获取WebGL的错误信息,那么就需要手动调用 gl.getError() 方法 该方法会返回以 ...
- Git分布式版本控制器安装注意点及其常用命令
将git按照默认选项下载安装后,打开git bach版面进行git命令行操作(记住在安装的过程中文件夹中不能存在中文):注:Windows下,路径名不要包含中文,因为Git对中文支持不给力,可能会存在 ...
- 万能的Python,还能用来制作高大上的进度条?
对于开发或者运维来说,使用Python去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到哪一步了呢? ...
- java调用python程序以及向python程序传递参数
在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...