四,服务器故障排查方法总结
问题描述:
每当出现网站访问不了的时候,估计应该就是服务器出现故障了,这个时候大部分情况都是属于数据库出现问题。
查找步骤:
1、查找top检查服务器负载是否有问题
一般网站访问不了,top显示的负载都是很大的,这个时候可以看到mysql的进程占用资源很高,往往就是mysql发生故障了
2、在服务器中查看网站的访问记录
这些访问记录存储在:/home/对应的网站名/access-logs/对应的网站名
可以先通过tail查看,查看出异常的ip的时候可以通过grep进行过滤查看,在这个文件一般都可以找到恶意爬虫、恶意访问的记录,这些往往有可能是导致mysql数据库挂掉的原因。
3、这个时候先对数据库进行重启,对apache进行重启
service mysql restart
service httpd restart
重启之后一般都可以暂时恢复正常的访问的了。如果是出于恶意访问的话,找出恶意访问的ip把它禁止掉即可,如果是网站数据库出现故障,那么还要进行数据库排查。
4、查找数据库错误日志
首先需要知道数据库mysql的安装目录,可以通过whereis mysql找到,但是这往往没用
还有一种方法,就是通过ps -ef | grep mysql来查看
或者也可以通过进入mysql,使用select @@basedir as basePath from dual来查看mysql安装目录
我们在第二种查找方法ps -ef | grep mysql中对应mysql的几种日志找到其所在目录,然后查看对应文件进行分析
mysql有以下几种日志
错误日志:-log-err
查询日志:-log
慢查询日志:-log-slow-queries
更新日志:-log-update
二进制日志:-log-bin
以上便是对应的数据库错误日志和慢查询日志的查看方法了
在服务器的维修中,线索都会显得扑朔迷离,有的甚至按起葫芦翘起瓢。一般来说不可能一次就可以准确地判断出问题的所在。这样就要求工程师要有信心和耐心。出现错误一般的方法都是根据经验优先使用最简单排错方法测试,如果没有解决问题再找其它因素进行测试。总之,服务器出错后必须一步一步解决,没有捷径可言。
服务端核心使用catserver,要求mc客户端的版本为1.12.2
如果想玩最新版的mc,可以使用官方原版的服务端核心,但想加插件/Mod就不方便了。
搭建catserver很容易,但怎么加插件,详细怎么配置,没研究。
看官网介绍:"CatServer是1.12.2的Forge+Bukkit+Spigot服务端核心, 国内最早开发的高版本核心, 支持大部分MOD和插件同时稳定运行"
我也不清楚catserver是不是集成了forge, 文档内容太少了
使用forge管理mod,mod的jar文件放到mods文件夹下即可。
有些mod只在客户端安装就好了,比如小地图,物品整理
有些mod需要服务器和客户端都装,比如铁箱子
比如服务器安装了铁箱子,但是客户端没有安装,客户端则无法进去服务器
加入forge后,在客户端使用命令会更方便,输入help会出现显示中文帮助,可以使用tab自动补全。
没有找到forge的安装/配置文档,官网只有如何开发用于forge的mod的文档
有一个命令是"/forge" 也没有找到相关文档,奇怪了...
所以也不研究了,就这吧
再使用MCDR来管理服务器。
这是一个基于 Python 的 Minecraft 服务端控制工具。可以在不对服务端做修改的情况下,加一些插件。
小至计算器、高亮玩家、b 站弹幕姬,大至操控计分板、管理结构文件、自助备份回档,都可以通过 MCDR 及相配套的插件实现。
想在玩家进入服务器时显示欢迎信息,就会用到MCDR。
使用Tmux启动一个会话,在这个会话中启动MCDR,这样会话不会中断。
客户端输入!!MCDR等命令,显示命令无效,不清楚和catserver或forge的配置有没有关系
目前在客户端只能使用/list列出来的命令
1.禁用ROOT权限登录。(重要)2.安全组收缩不使用的端口,建议除443/80以及ssh登录等必要端口外全部关闭。
3.防火墙收缩不使用的端口,建议除443/80以及ssh登录端口外全部关闭。
4.更改ssh默认端口22
5.除登录USER,禁止其他用户su到root进程,并且ssh开启秘钥及密码双层验证登录。(重要)
6.限制除登录USER外的其他用户登录。
7.安装DenyHosts,防止ddos攻击。
8.禁止系统响应任何从外部/内部来的ping请求。
9.保持每天自动检测更新。
10.禁止除root之外的用户进程安装软件及服务,如有需要则root安装,chown给到用户。
11.定时给服务器做快照。
12.更改下列文件权限:
13.限制普通用户使用特殊命令,比如wget,curl等命令更改使用权限,一般的挖矿程序主要使用这几种命令操作。
1.nginx进程运行在最小权限的子用户中,禁止使用root用户启动nginx。(重要)
2.配置nginx.conf,防范常见漏洞:
1.禁止root权限启动apache服务!禁止root权限启动apache服务!禁止root权限启动apache服务!重要的事情说三遍!因为这个问题被搞了两次。
2.改掉默认端口。
3.清空webapps下除自己服务外的其他文件,删除用户管理文件,防止给木马留下后门。
4.限制apache启动进程su到root进程以及ssh登录,限制启动进程访问除/home/xx自身目录外的其他文件。
5.限制apache启动进程操作删除以及编辑文件,一般a+x即可。
1.关闭外网连接,与java/php服务使用内网连接。
2.在满足java/php服务的基础上,新建最小权限USER给到服务使用,禁止USER权限访问其他项目的库。
3.root密码不要与普通USER相同。
4.建议使用云库,云库具备实时备份,动态扩容,数据回退等功能,减少操作风险。
1.关闭外网连接,只允许内网交互,基本这个做了之后就已经稳了。
2.禁止root权限启动,运行在普通用户进程里。
3.更改默认端口。
4.添加登录密码。
以上是自己做的防范手段,不成熟见解,有一些方案待验证,不定时更新,欢迎大佬补充!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)