最近,已经发现由该公司的服务器创建的网站访问速度很慢,并且该服务器对输入命令的响应也很慢。处理步骤如下:
1、通过top命令查看服务器CPU,内存,IO等的使用情况
发现CPU基本上在80%以上;记忆还可以,有剩余;平均CPU负载也达到40。
2、通过vmstat和iostat查看相关参数,并确认CPU使用率高和CPU不足。当时,我以为服务器的CPU已经用完了,但是应用程序并不多。两个CPU就足够了
3、之后,我慢慢查看了进程和服务线程,端口号占用率和数据包发送(w,procinfo,ps,正常运行时间,netstat),只看到应用的日志占用了大多数CPU资源。
4、后来百度有点,有一个类似的帖子,“发行中心后删除文件空间后仍未解决”(来源:作者:cj39742886 9)
4. 1、的帖子如下:
现象:
查找当前磁盘空间使用情况:
[root @ ticketb〜]#df -h
已使用的FilesystemSize可用百分比已安装在
/ dev / sda1981M 203M 729M 22%/
none16G 0 16G 0%/ dev / shm
/ dev / sda9 2. 9G 37M 2. 7G 2%/ tmp
/ dev / sda7 4. 9G 1. 9G 2. 7G 42%/ usr
/ dev / sda8 2. 9G 145M 2. 6G 6%/ var
/ dev / mapper / vghome-lvhome
20G 19G 11M 100%/家庭
/ dev / mapper / vgoradata-lvoradata
144G 48G 90G 35%/ u01 / oradata
/ dev / mapper / vgbackup-lvbackup
193G 7. 8G 175G 5%/ u01 / backup
使用以下命令查找无用的文件,然后将其删除
[root @ ticketb〜]#查找/ home / oracle / admin / dbticb / udump / -name“ dbticb _ *。trc” -mtime +50 | xargs rm -rf
检查磁盘空间使用情况后,我发现/ home空间没有变化
[root @ ticketb〜]#df -h
已使用的FilesystemSize可用百分比已安装在
/ dev / sda1981M 203M 729M 22%/
none16G 0 16G 0%/ dev / shm
/ dev / sda9 2. 9G 37M 2. 7G 2%/ tmp
/ dev / sda7 4. 9G 1. 9G 2. 7G 42%/ usr
/ dev / sda8 2. 9G 145M 2. 6G 6%/ var
/ dev / mapper / vghome-lvhome
20G 19G 11M 100%/家庭
/ dev / mapper / vgoradata-lvoradata
144G 48G 90G 35%/ u01 / oradata
/ dev / mapper / vgbackup-lvbackup
193G 7. 8G 175G 5%/ u01 / backup
这很沮丧。我已经删除了文件,为什么没有释放空间。 rm命令应直接删除。检查/ home
下占用了什么空间
[root @ ticketb〜]#du -h --max-depth = 1 / home
16K / home / lost + found
2. 6G / home / oracle
2. 6G / home
但是这里的显示空间已经释放,所以去google,
不释放磁盘空间的原因:
在Linux或Unix系统中,通过rm或文件管理器删除文件会从文件系统的目录结构中取消链接(取消链接)。但是,如果文件被删除
打开(正在使用一个进程),则该进程仍将能够读取文件,并且磁盘空间将始终被占用。我删除的是oracle警报日志文件
该文件在删除后应处于使用状态

解决方案
首先获取已删除但仍被应用程序占用的文件列表,如下所示:
[root @ ticketb〜]#lsof | grep已删除
oracle 12639 oracle5wREG253,0648 215907 / home / oracle / admin / dbticb / udump / dbticb_ora_1263 7. trc(已删除)
oracle 12639 oracle6wREG253,0 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log(已删除)
oracle 12639 oracle7uREG253,0 036282 / home / oracle / oracle / product / 1 0. 2. 0 / db_1 / dbs / lkinstdbticb(已删除)
oracle 12639 oracle8wREG253,0 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log(已删除)
oracle 12641 oracle5wREG253,0 648215907 / home / oracle / admin / dbticb / udump / dbticb_ora_1263 7. trc(已删除)
oracle 12641 oracle6wREG253,0 215748 / home / oracle / admin / dbticb / bdump / alert_dbticb.log(已删除)
。
。
oracle 23492 oracle6wREG253,0 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log(已删除)
oracle 23492 oracle7uREG253,00 36282 / home / oracle / oracle / product / 1 0. 2. 0 / db_1 / dbs / lkinstdbticb(已删除)
oracle 23492 oracle8wREG253,0 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log(已删除)
oracle 23494 oracle10uREG253,00 36307 / home / oracle / oracle / product / 1 0. 2. 0 / db_1 / dbs / lkinstrmandb(已删除)
从输出中,您可以看到/home/oracle/admin/dbticb/bdump/alert_dbticb.log仍在使用并且没有释放空间
如何释放该过程?
一种方法是杀死相应的进程,或者停止使用该文件的应用程序,然后让os自动回收磁盘空间
我的环境中有许多使用此文件的进程。停止该过程有点麻烦,然后又很冒险。
当linux打开文件时,Linux内核将在/ proc /“ / proc / nnnn / fd /目录(nnnn是pid)”中为每个进程创建一个pid。
命名目录
用于存储有关进程的信息,其子目录fd存储该进程打开的所有文件的fd(fd:filedescriptor)。
kill过程可以通过截断proc文件系统中的文件来强制系统回收分配给使用的文件。
这是一项高级技术,仅在管理员确定不会影响正在运行的过程时使用。适用于此类聚会

类型支持不好。使用中的文件被截断时,可能会导致无法预料的问题
所以我仍然停止应用程序来解决它
重新启动oracle,发现/home/oracle/admin/dbticb/bdump/alert_dbticb.log对应的空间已释放
检查磁盘空间使用情况后,我发现空间已被回收
[root @ ticketb〜]#df -h
已使用的FilesystemSize可用百分比已安装在
/ dev / sda1981M 203M 729M 22%/
none16G 0 16G 0%/ dev / shm
/ dev / sda9 2. 9G 37M 2. 7G 2%/ tmp
/ dev / sda7 4. 9G 1. 9G 2. 7G 42%/ usr
/ dev / sda8 2. 9G 145M 2. 6G 6%/ var
/ dev / mapper / vghome-lvhome
20G 2. 6G 16G 15%/ home
/ dev / mapper / vgoradata-lvoradata
144G 48G 90G 35%/ u01 / oradata
/ dev / mapper / vgbackup-lvbackup
193G 7. 8G 175G 5%/ u01 / backup
好的,问题解决了,然后完成整理工作。
--------------------------------------------------- --------------------------------------------------
4. 2、我使用过:ll / proc / pid / fd,我检查了此目录中的文件,其中许多都以红色突出显示,并标记为已删除
4. 3、我再次使用了该命令: grep已删除以查询已删除但未及时恢复的文件
4. 4、当确认它没有用时,kill -9 pid直接终止该进程。删除某些进程后,顶级系统和CPU使用率下降很多,并继续清理其他已删除的文件。
4. 5、 CPU太平坦,降至1%以下,并且负载值已从原来的40降至0. X。
但是有一个问题:有两个标记为要删除的文件,但是指向的软链接是当前使用的应用程序下的文件。检查当前应用程序的进程号,并将其与删除的进程进行比较。两者是不同的。我直接将其杀死,但是发现正在运行的应用程序已挂起。重新启动应用程序后,lsof |中仍然存在该文件。 grep已删除,也被标记为已删除文件,并且进程号相同。关闭相应的应用程序,检查该文件是否不再存在,再次启动应用程序,该文件由应用程序自动生成,没有办法将其删除,真的没有解决这个问题吗? ? ? ? ? ?
本文摘自wdy198622 51CTO博客,原文链接:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-367051-1.html
赶紧买两袋南方黑芝麻糊压压惊
还可以合伙用你老婆
包括水域