标签:错误 排查 exec 参考 默认 显示 color 信息 pass
运维常用指令
如何使用log:
1.用deploy登陆。
2.cd ~/xxx/current. 进入Rails程序的当前目录下。
3.tail -n 500 log/production.log 查看最近期的500条记录。
4.tail -f log/production.log 这样一直挂着,随时看最新的纪录。
许多程序数据库的log都可以在/var/log中找到对应的文件夹。如mysql, redis, nginx。
Rails的错误信息,有可能发生在Nginx。log位置在
/var/log/nginx/error.log
打开这个文件需要root身份。
另外:/var/log/nginx/access.log纪录用户的访问信息,文件磁盘占用增长非常快,最好使用logrotate工具切割日志记录(具体方法参考https://zhuanlan.zhihu.com/p/24880144)。
查看系统状态
free -h 显示内存用量
df -h 显示硬盘剩馀空间, disk file
sudo passenger-status 显示 Passenger 状态:主要观察 Passenger 开了多少个 Rails 进程(默认最多开6个,如果机器的内存够多,你可以调整 Nginx 设定 passenger_max_pool_size 增加更多进程来服务更多流量)
sudo passenger-memory-stats 显示 Passenger 内存状态,主要观察每个 Rails 进程耗费多少内存
---- Passenger processes -----
PID VMSize Private Name
-------------------------------
24591 404.0 MB 77.1 MB Passenger AppPreloader:/home/deploy/transaction/current (forking…)
top 动态查看系统状态,主要可以看 CPU 负载情形,以及哪些进程在忙.
ps ax 显示目前所有进程(process)一个快照,
用 sudo kill -9 <PID> 可以强制删除该程序,这是最后手段。
因为,内核立即终止被kill的进程。当一个进程以这种方式终止的时候,它没有机会去做些“清理”工作,或者是保存工作。 因为这个原因,把 KILL 信号看作最后一招,当其它终止信号失败后,再使用它。
kill [-signal] PID...
kill 命令不是真的“杀死”程序,而是给程序发送信号。
signal有多个:一般用数字表示,-9就是强行终止程序。
信号是操作系统与程序之间进行通信时所采用的几种方式中的一种。
比如ctrl + c, 这个组合按键就是一个信号。使用它会发送一个(Interrupt,中断)的信号。
程序,相应地,监听信号的到来,当程序 接到信号之后,则做出响应。
排查
网站如果无法正常运作,第一个检查网络是否正常,是不是可以 SSH 连线进去。如果第一关就卡住了,可能整台机器已经蒙了,这时候需要回到云服务的后台,强制关机重开。
如果可以连线进去,就先检查目前系统负载情形,是不是内存不够了? 或是硬盘满了?
如果是 Passenger 进程太多人塞住了,可以先尝试重开 Nginx 让网站恢复运作。
如果还是没多久还是一样,就需要进一步看 log 检查是哪一个环节不正常。
网站服务器重启指令
默认安装完以及开机后,就会启动 Nginx。如果有修改 Nginx 设定档,需要重开 Nginx。
启动 sudo service nginx start
停止 sudo service nginx stop
重开 sudo service nginx restart
如果只是要重开 Rails,可以不重开 Nginx。在你的 Rails 目录下(例如 /home/deploy/rails-recipes/current 这个目录)执行 touch tmp/restart.txt 即可,这样 Passenger 就会知道要重新加载 Rails,而不需要重开 Nginx。(不理解,因为只是新建一个file而已。)
在远端如何进 rails console?
用deploy身份:
cd ~/.your_project/current
执行 bundle exec rails c -e production
如何在远端跑 rake?
用deploy身份:
cd ~/.your_project/current
执行 RAILS_ENV=production bundle exec rake db:seed
整理 Log 档案
参考https://zhuanlan.zhihu.com/p/24880144
Linux 内建有 logrotate 工具,可以定期清空和压缩 Log 档案。
使用/etc/logrotate.d 日志管理文件夹来自定义应用的配置。
该目录里的所有文件都会被主动的读入到/etc/logrotat.conf中执行。
新增touch rails 档案:
/home/deploy/your_appname/shared/log/*.log { daily dateext missingok rotate 65535 compress notifempty copytruncate }
具体说明在server读man logrotate
运行logrotate:
执行logrotate /etc/logrotate.d/your_app_name
参数:
-d, 测试日志切割(debug)
-vf, 强制轮询切割日志(verbose and force)
如果linux没有,安装
sudo apt-get logrotate
标签:错误 排查 exec 参考 默认 显示 color 信息 pass
原文地址:https://www.cnblogs.com/chentianwei/p/9931782.html