一次walle项目错误处理--巨坑
一次walle项目错误处理--巨坑
Walle的简介我就不多说了它主要是一个web部署系统工具,具有一键快速回滚的功能,它能清晰的记录 上线单申请、审核、部署和实时操作日志,能支持各种web代码发布和回滚,对于jenkins来说应用时比较简单一点。
对于walle,我现在的公司主要是使用walle实现代码发布,(搭建可参考 walle搭建)下面是我配置的一个项目,(有修改,理解意思就好)先给大家贴个图.
各配置的理解如下:
· 代码的检测仓库目录:如 /data/code/api
· 项目的用户权限管理 www
· 生产环境的web目录,该目录的最后一个目录不需要创建,发布时自动软连生成 如:/data/www/www.api.com
· Walle的发布临时目录,存放web的版本 如: /data/publish/www/api
· 部署前准备任务:pre-deploy (前置检查)
· 代码检出后处理任务post-deploy:如vendor和处理php命令
· 同步后更新软链前置任务pre-release
· 发布完毕后收尾任务post-release:如重启、一些文件的操作
一、问题出现
今天我在发布代码的时候出现了错误(上线错误:更新代码文件错误)
这时,我就重复的再发布,还是不行,这个项目明前两天还是可以发布的。(这时很纳闷),没办法,百度找资料,结果没找到,还是自己解决。
二、解决办法与思路
1、问题出现地方,post-deploy命令执行不了
这时我就想,是不是post-deploy的命令执行不了,导致上线不了。
解决办法:
想好就干,然后,我把项目的post-deploy命令删除了,然后上线。
测试结果:
结果,上线失败,还是同样的错误。证明发布不了还是命令的问题。
2、问题出现地方,www没有权限。
自己思考了一下,既然是post-deploy命令还没执行,就已经出现了问题,那个可能是。www用户没有权限拉取代码。
解决办法:
给予代码检出目录的www权限,代码检出目录的拥有者为www,命令如下(操作在walle主机上)
#chown -R www:www /data/code/api
切换用户测试
#su – www
代码拉取,测试post-deploy命令
去到代码检出目录
#cd /data/code/api
#git pull origin master
www用户测试php命令
#composer update #php artisan migrate
测试结果:
结果,上线失败,还是同样的错误。(感觉眼都要黑了)
3、问题出现地方,查看walle日志。
正常安装的情况,walle的日志是放到/tmp/walle/ 目录下,查看最新的文件。日志已经自动安照时间来命令的了
解决思路:查看日志的错误地方
#cat /tmp/walle/walle-20180619.log | grep error
发现错误如下
果然,我们找到了错误了,原来错误原因是cp命令复制错误,是因为没有多余的空间导致的,我们找到问题出现的地方就好解决了。
查看本地的磁盘使用情况:
发现果然沾满了
我们再查看一下Inodes的使用情况,
#df -i
发现它/data目录Inodes使用情况是很少的。所以是/data的目录磁盘沾满了
接下来我们继续查看data目录占用是什么情况导致磁盘空间沾满的。
# du -sh /data
惊奇的发现,/data目录占用,还远远达到90多G的占用情况,这时,我们已经找到解决的思路了。
解决办法:
出现了这种情况,我们就已经想到,是/data目录肯定是被那个进程占用了,解决办法就是把进程杀死,就基本完事了。Walle部署项目通过php的来执行的,我们把一些占用、/data的线程杀死就可以了
#lsof | grep /data/code | awk ‘{print $2}’| xargs kill – 9
或者你可以这样
#lsof | grep deleted | awk ‘{print $2}’ | xargs kill – 9
(这里没能及时截到图)
杀完后重启php,因为刚刚的杀死进程的时候,已经把php杀死了
所以需要重启php
#service php-fpm restart
测试结果:
查看磁盘占用情况,发现占用的空间回来了
重新发布项目,成功了(谢天谢地),艰难的解决了一个问题。
结果分析:
首先是www用户的权限所引起的,然后就是php进程占用,导致同步不成功。
三、项目问题又出现。
第二天上班,想着发布一下项目上线啦,谁知道,又出现了错误,这就让人崩溃了,明明昨天还能发布的。没有想得太多,立刻就查看walle的日志,发现又是磁盘空间不足。
1、问题的再度出现
使用命令查看/data目录的磁盘使用情况,发现如下
[root@centos api]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 50G 10G 37G 22% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 24K 3.9G 1% /dev/shm tmpfs 3.9G 612K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vdb1 99G 92G 1.6G 99% /data tmpfs 783M 0 783M 0% /run/user/0 tmpfs 783M 0 783M 0% /run/user/1004
接着发现我又把php的进程杀掉,再查看一下空间,发现还是那样。
2、解决办法。
出现了上面的结果,说明不是进程占用而导致的。说明是有文件占用而导致的。
查看/data的目录大少
[root@centos api]# du --max-depth=1 -h /data 2.9G /data/wwwlogs 149M /data/wwwroot 20G /data/files 68G /data/code 474M /data/mysql 92G /data
我们发现,源来/data/code目录出现了问题,使用du --max-depth=1 –h命令,一步步找到文件,删除文件。
结果:
重新查看/data的使用情况,发现占用的空间已经回来了。重新发布
发布成功,问题解决了。
3、问题出现分析
我在删除文件的时候,发现,有十几个文件的重复的,每个文件的大少达几G,到底是什么原因导致的呢。
最后发现肯定是自己在发布项目的时候,没有等到发布完就刷新,然后又安部署,导致重复出现代码目录的出现,然后保留在发布目录,导致累积。
注意事项:
在使用walle上线项目的时候,需要按F12来查看项目是否发布完成,再刷新,这样的话就不会重复发布,导致代码文件累积。
四、总结
遇到错误,分析日志是一个很好解决错误的办法。要养成习惯才行。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
记一次接口压力测试与性能调优
〇、经验总结 1.如果总的CPU占用率偏高,且基本都被业务线程占用时,CPU占用率过高的原因跟JVM参数大小没有直接关系,而跟具体的业务逻辑有关。2.当设置JVM堆内存偏小时,GC频繁会导致业务线程停顿增多,TPS下降,最后CPU占用率也低了;3.当设置JVM堆内存偏大时,GC次数下降,TPS上升,CPU占用率立刻上升。4.Dom4J 这个xml解析工具性能很强大,但在处理节点和层级都较多的xml文本时,整体解析效率依然会成为业务处理瓶颈。 一、背景说明 最近新项目上线,需要对项目中的一个HTTP接口进行压力测试,以保证接口性能稳定性。该接口涉及到的主要业务是接收HTTP请求,获取请求中的xml报文参数,并将xml报文解析后存入MySQL数据库。接口业务流程如下: 该业务接口部署的服务器配置和部署MySQL组件的服务器配置一致,都是4核8G,50G普通硬盘,并且处于同一个内网网段,我们预估的性能指标要达到200并发,500TPS。在压力测试过程中,我们重点关注TPS、GC次数、CPU占用率和接口响应时间等指标。 二、测试过程 完成项目部署后,我们开始编辑jemeter测试脚本,设置压力...
-
下一篇
蚂蚁搬家式迁移mysql数据库
乘机房搬迁的机会,打算做一次业务整合。现有的架构是在2010年规划并运营起来的,随着时间的推移,项目也越来越多。打开nginx配置文件,有四十多行include包含存在,每一个包含就是一个项目(有些是web,有些是app)。一整个机柜,老旧的设备,负载均衡高可用架构。为保证业务一致性和降低成本,业务数据(开发的应用程序及用户上传数据)共享一套NFS;各业务共享同一套物理数据库(一台物理服务器mysql创建多个库)。随着业务和访问量的增长,这种隐患越来越令人担忧,主要表现在以下几个方面: ◆安全问题 数十个站点共享目录,以nfs方式共享给各物理服务器,这几十个项目,只要任何一个有安全漏洞存在,有心人都能进来为所欲为,让站点全部沦陷。时不时的,被人注入恶意代码,针对性的进行清除,但没多久又被注入篡改。大家心里都有数,存在漏洞的地方,不一定是被篡改的那个。但站点太多,又没有隔离,根本无法用安全工具扫描(一个站点进行扫描,平均花费一天)。 [root@web57 ~]# more /usr/local/nginx/conf/nginx.confuser www www;worker_pro...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- MySQL数据库在高并发下的优化方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19