模拟Web 服务器磁盘满故障深入解析
(1) 安装httpd web服务
yum install httpd -y
[root@root ~]# /etc/init.d/httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for root httpd: Could not reliably determine the server'sfully qualified domain name, using 127.0.0.1 for ServerName [ OK ] |
cd /etc/httpd/conf 编辑配置文件,让日志记录到/app/logs 下面
[root@root ~]# cd /etc/httpd/conf
检查80端口是否开启
[root@root conf]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 2032 root 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2034apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2035apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2036apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2037apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2038apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2039apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2040apache 4u IPv6 13936 0t0 TCP *:http (LISTEN)
httpd 2041apache 4u IPv6 13936 0t0 TCP*:http (LISTEN
替换httpd.conf里默认的日志路径
[root@root conf]# sed -i "s@#CustomLoglogs/access_log common@CustomLog /app/logs/access_log common@g" httpd.conf
[root@root conf]# grep "access_logcommon" httpd.conf
CustomLog /app/logs/access_log common
# CustomLog logs/dummy-host.example.com-access_log common
[root@root conf]#
(2)创建一个小的文件系统,用于存放上述 access_log 日志
[root@root conf]# dd if=/dev/zero of=/dev/sdc bs=8kcount=10
10+0 records in
10+0 records out
81920 bytes (82 kB) copied, 0.000383989 s, 213 MB/s
[root@root conf]# mkfs -t ext4 /dev/sdc
mke2fs 1.41.12 (17-May-2010)
/dev/sdc is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 80 blocks
4 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group
Writing inode tables: done
Filesystem too small for a journal
Writing superblocks and filesystem accountinginformation: done
This filesystem will be automatically checked every24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
创建日志文件
[root@root conf]# mkdir /app/logs -p
[root@root conf]# mount /dev/sdc /app/logs
mount: /dev/sdc is not a block device (maybe try`-o loop'?)
[root@root conf]# mount -o loop /dev/sdc /app/logs
(3)重启 httpd 服务,确保日志记录到了上述文件系统挂载的/app/log 下面
/etc/init.d/httpd restart
(4)写个循环脚本访问 httpd,使得 httpd 日志充满/app/logs 整个空间
for n in `seq 100000`;do curl -s 127.0.0.1 >/dev/null;done
(5)查看磁盘空间
[root@root conf]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 7.0G 18% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
错误的删除方案
[root@root logs]# rm -f /app/logs/access_log
[root@root conf]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 7.0G 18%/
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
/dev/sdc 73K 67K 2K 99%/app/logs
[root@root logs]# lsof|grep del 还有进程在调用
httpd 6148 root 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38178 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38483 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38484 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38752 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
(6)解决问题
1、 请先停掉模拟访问测试脚本
for n in `seq 100000`;do curl -s 127.0.0.1>/dev/null;done
2、重启 Http 服务
[root@root log]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
(6)查看处理结果
[root@root log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.2G 2.0G 4.9G 30% /
tmpfs 244M 0 244M 0% /dev/shm
/dev/sda1 194M 54M 131M 30% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
(7)较好的处理方案
清空日志而不删除日志
>/app/logs/access_log
转载于:https://blog.51cto.com/liruifeng/1844479
模拟Web 服务器磁盘满故障深入解析相关推荐
- 小程序web服务器是什么,【小程序】模拟web服务器
/* 模拟web服务器 */ package com.lin.michael; import java.io.IOException; import java.net.ServerSocket; im ...
- 服务器芯片镜像测试,模拟镜像服务器磁盘问题的两个测试【转】
我们知道在高安全模式下,在主服务器上提交的事务必须同时在镜像服务器上提交成功,否则该事务无法在主数据库上提交. 在上面的图中,一个事务在主数据库上提交的步骤包含: 客户端程序将事务发送给主数据库服务器 ...
- 在Web服务器磁盘上缓存数据和HTML页面
有时候,有"许多"数据要在内存中缓存."许多"是相对而言的,它取决于能消耗多少内存.缓存项目的数量以及取回数据的频度.任何情况下,如果需要在内存中缓存大量的数据 ...
- web服务器双机热备方案解析
(1).假设外网虚拟IP 72.249.146.214上,内网hosts设置db10对应内网虚拟IP 192.168.146.214 (2).默认情况下,由主机绑定内.外网虚拟IP,备机作为备份,当主 ...
- IIS 7.5 中提供的 Web 服务器 (IIS) 角色服务
Internet 信息服务 (IIS) 7.5 是 Windows® 7 中的 Web 服务器 (IIS) 角色和 Windows Server® 2008 R2 中的 Web 服务器.Web 服务器 ...
- Forefront_TMG_2010-TMG发布Web服务器
1.环境拓扑图: 2.准备DMZ区域的Web服务器: 安装Web服务器: 在DMZ区域的Web服务器进行测试: 3.TMG发布Web服务器: 打开TMG管理控制台,新建"网站发布规则&quo ...
- 如何在多台web服务器上共享session?
比如:现在有三台php服务器,且实现了负载均衡,如何让这三台web服务器共享session数据? session数据默认是以文件的形式保存在web服务器的磁盘上,一般都是用户登录成功的时候,保存ses ...
- web-基础入门-web框架-web服务器-wsgi接口
理解框架 框架就是把反复写反复用的东西,提练出来,组成的一个东西. 生活的情景,比如舞台的共享 开发的情景,比如,产生随机数,轮播图,分页等,需求一样,需要的时候直接调用就好.可以写成模块,用时调用. ...
- 开源字符处理类库:CharString类 拆分自自己研发的web服务器中的类库
博主目前在做WEB服务器,众所周知WEB服务器最主要的是解析HTTP协议,其中最关键的是字符解析,也就是分割字符来确定每个字段所表达的意思,客户端的意愿! 此类是博主在编写WEB服务器所写出来的,专门 ...
最新文章
- 谈谈Android重打包--雷区
- 2017年云栖大会-云HBase专场会后资料-欢迎扩散
- mysql 的select语句_MySQLSELECT语句_MySQL
- Android异步机制一:使用Thread+Handler实现非UI线程更新UI界面
- linux i2c 设备节点读写
- Javadoc注释规范
- Java 修饰符、运算符笔记总结
- 【前端2】js:原始类型,运算符,调试,页面加载,轮播图,Bom(对象,时钟),Dom(全选全不选,省市级联,隔行/触摸换色,表单校验)
- web容器(03):Nginx配置负载均衡
- 在JBoss AS 7上部署BroadleafCommerce 2.0
- Windows 8连接*** 691错误解决办法
- Golang实践录:命令行cobra库实例再三优化
- 求一个任意实数c的算术平方根g_中考总复习实数知识点
- linux添加nginx启动脚本_linux环境开机自启动nginx
- UVA10324 Zeros and Ones【水题】
- C语言三种形式编九九乘法表,C语言九九乘法表(五种输出形式)
- 连读、变音、失音、浊化、弱读、节奏
- 交互体验设计优秀的产品
- 信息3.0 ,让机器完成熵增中的有序
- Ubuntu科学操作笔记---kalrry