今天小站被攻击了,简单整理下解决的方法,方便有遇到同样问题的小伙伴,可以快速定位问题,并解决。
服务无法正常响应
网站是自己开发的,就是玩儿,也没有太多的功能和访问限制,就一个单一的页面和下载功能。有些小伙伴估计是闲的蛋疼了,想要去挑战别人的技术(恭喜你,这次你赢了),总是有人没事刷刷流量,刷访问,服务器是阿里云,磁盘存储比较小,只有40GB。

通过服务器端访问返回的错误,可以看到是服务器端异常,首先,打算重启一下tomcat,结果再次启动时,直接卡着,然后我通过口令df -h查看磁盘空间,卧槽,爆满。
[root@iZ2ze7wyymbgnonfk0zn48Z logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 39G 183M 100% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 476K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 379M 0 379M 0% /run/user/0
赶紧删除服务器上面的一些安装包和软件,试图释放一些资源,让服务先正常启动,删了些安装包之后,再次查看,还是100%使用,资源并没有释放,还以为是句柄数造成的资源被占用没有及时释放,reboot,重启了阿里云服务器。再次查看,还是一样,我才意识到问题没有我想象的那么简单。
磁盘饱满
看是查看磁盘文件大小:
du -lh --max-depth=1 /
发现usr文件夹下磁盘占用较多(以个人的路径为主)
继续查看/usr下文件大小,
du -lh --max-depth=1 /usr/
....
直到最后定位到最大的那个文件夹下的文件,我这里最后定位到了tomcat下log
[root@iZ2ze7wyymbgnonfk0zn48Z usr]# du -lh --max-depth=1 /usr/local/tomcat/logs/
33G /usr/local/tomcat/logs/
果断干掉那些日志文件。空间也得到短暂的释放。
数据库挂掉
资源释放以后,重新启动服务,这次服务器启动正常,但是数据库在连接过程中,有报错了,提示表异常,需要修复。

表需要修复:
Table ** is marked as crashed and should be repaired; nested exception is java.sql.SQLException
ok,进入到Mysql。直接操作数据表。
# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| idea_db |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use idea_db;
Database changed
mysql> check table post_basic;
+--------------------+-------+----------+-----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------+-------+----------+-----------------------------------------------------------+
| idea_db.post_basic | check | warning | Table is marked as crashed |
| idea_db.post_basic | check | error | Size of datafile is: 75198464 Should be: 75198476 |
| idea_db.post_basic | check | error | Corrupt |
+--------------------+-------+----------+-----------------------------------------------------------+
3 rows in set (0.01 sec)
切换数据库,找到异常的那张表。执行repair table 表名,修复表即可。
mysql> repair table post_basic;
+--------------------+--------+----------+-------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------+--------+----------+-------------------------------------------------------+
| idea_db.post_basic | repair | info | Found block that points outside data file at 75198436 |
| idea_db.post_basic | repair | status | OK |
+--------------------+--------+----------+-------------------------------------------------------+
2 rows in set (9.34 sec)
mysql> check table post_basic;
+--------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+-------+----------+----------+
| idea_db.post_basic | check | status | OK |
+--------------------+-------+----------+----------+
1 row in set (0.62 sec)
至此,数据表修复完成,重启服务,重启数据库。访问小站,恢复正常。
后面也会对网站做些安全处理。
本文讲述了作者如何处理一次网站被恶意流量攻击导致磁盘空间满载,以及修复数据库表异常的过程,包括日志清理、磁盘释放和数据表修复步骤。

5378

被折叠的 条评论
为什么被折叠?



