推荐调大服务器所支持的最大文件句柄数(File Descriptor,简写为fd)。
说明:主流 *** 作系统的设计是将 TCP/UDP 连接采用与文件一样的方式去管理,即一个连接对应于一个 fd。主流的 Linux 服务器默认所支持最大 fd 数量为 1024,当并发连接数很大时很容易因为 fd 不足而出现“open too many files”错误,导致新的连接无法建立。 建议将 Linux 服务器所支持的最大句柄数调高数倍(与服务器的内存数量相关)linux删除文件后没有释放空间\x0d\ \x0d\今天发现一台服务器的home空间满了,于是要清空没用的文件,当我删除文件后,发现可用空间没有变化\x0d\ \x0d\os:centos47\x0d\\x0d\现象:\x0d\ \x0d\发现当前磁盘空间使用情况:\x0d\ \x0d\[root@ticketb ~]# df -h\x0d\Filesystem Size Used Avail Use% Mounted on\x0d\/dev/sda1 981M 203M 729M 22% /\x0d\none 16G 0 16G 0% /dev/shm\x0d\/dev/sda9 29G 37M 27G 2% /tmp\x0d\/dev/sda7 49G 19G 27G 42% /usr\x0d\/dev/sda8 29G 145M 26G 6% /var\x0d\/dev/mapper/vghome-lvhome\x0d\ 20G 19G 11M 100% /home\x0d\/dev/mapper/vgoradata-lvoradata\x0d\ 144G 48G 90G 35% /u01/oradata\x0d\/dev/mapper/vgbackup-lvbackup\x0d\ 193G 78G 175G 5% /u01/backup\x0d\\x0d\通过以下的命令找到没用的文件,然后删除\x0d\\x0d\[root@ticketb ~]# find /home/oracle/admin/dbticb/udump/ -name "dbticb_trc" -mtime +50 | xargs rm -rf\x0d\ \x0d\然后在查看磁盘空间使用情况,发现没有/home空间没有变化\x0d\ \x0d\[root@ticketb ~]# df -h\x0d\Filesystem Size Used Avail Use% Mounted on\x0d\/dev/sda1 981M 203M 729M 22% /\x0d\none 16G 0 16G 0% /dev/shm\x0d\/dev/sda9 29G 37M 27G 2% /tmp\x0d\/dev/sda7 49G 19G 27G 42% /usr\x0d\/dev/sda8 29G 145M 26G 6% /var\x0d\/dev/mapper/vghome-lvhome\x0d\ 20G 19G 11M 100% /home\x0d\/dev/mapper/vgoradata-lvoradata\x0d\ 144G 48G 90G 35% /u01/oradata\x0d\/dev/mapper/vgbackup-lvbackup\x0d\ 193G 78G 175G 5% /u01/backup\x0d\ \x0d\这个郁闷啊,明明删除文件了,怎么空间没有被释放啊,rm命令应该是直接删除啊,在查看下/home下还有什么占用空间\x0d\ \x0d\[root@ticketb ~]# du -h --max-depth=1 /home\x0d\16K /home/lost+found\x0d\26G /home/oracle\x0d\26G /home\x0d\ \x0d\可这里显示空间已经释放了啊,于是google下,\x0d\ \x0d\未释放磁盘空间原因:\x0d\ \x0d\在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink)然而假设文件是被\x0d\打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。而我删除的是oracle的告警log文件\x0d\删除的时候文件应该正在被使用\x0d\ \x0d\解决方法\x0d\ \x0d\首先获得一个已经被删除可是仍然被应用程序占用的文件列表,例如以下所看到的:\x0d\\x0d\[root@ticketb ~]# lsof |grep deleted\x0d\oracle 12639 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637trc (deleted)\x0d\oracle 12639 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticblog (deleted)\x0d\oracle 12639 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/product/1020/db_1/dbs/lkinstdbticb (deleted)\x0d\oracle 12639 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticblog (deleted)\x0d\oracle 12641 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637trc (deleted)\x0d\oracle 12641 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticblog (deleted)\x0d\。\x0d\。\x0d\。\x0d\oracle 23492 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticblog (deleted)\x0d\oracle 23492 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/product/1020/db_1/dbs/lkinstdbticb (deleted)\x0d\oracle 23492 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticblog (deleted)\x0d\oracle 23494 oracle 10u REG 253,0 0 36307 /home/oracle/oracle/product/1020/db_1/dbs/lkinstrmandb (deleted)\x0d\\x0d\从输出结果能够看到/home/oracle/admin/dbticb/bdump/alert_dbticblog还被使用,未被释放空间\x0d\ \x0d\怎样让进程释放呢?\x0d\ \x0d\一种方法是kill掉相应的进程,或者停掉使用这个文件的应用,让os自己主动回收磁盘空间\x0d\我这个环境有非常多进程在使用的这个文件,停掉进程有点麻烦,再有就是风险非常大\x0d\ \x0d\当linux打开一个文件的时候,Linux内核会为每个进程在/proc/ 『/proc/nnnn/fd/文件夹(nnnn为pid)』建立一个以其pid\x0d\为名的文件夹用来保存进程的相关信息,而其子文件夹fd保存的是该进程打开的全部文件的fd(fd:file descriptor)。\x0d\kill进程是通过截断proc文件系统中的文件能够强制要求系统回收分配给正在使用的的文件。\x0d\这是一项高级技术,仅到管理员确定不会对执行中的进程造成影响时使用。应用程序对这样的方\x0d\式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题\x0d\ \x0d\所以我还是采用停应用来解决\x0d\ \x0d\restart oracle数据库,发现/home/oracle/admin/dbticb/bdump/alert_dbticblog相应的空间被释放\x0d\ \x0d\在查看磁盘空间的使用情况,发现空间已经回收了\x0d\\x0d\[root@ticketb ~]# df -h\x0d\Filesystem Size Used Avail Use% Mounted on\x0d\/dev/sda1 981M 203M 729M 22% /\x0d\none 16G 0 16G 0% /dev/shm\x0d\/dev/sda9 29G 37M 27G 2% /tmp\x0d\/dev/sda7 49G 19G 27G 42% /usr\x0d\/dev/sda8 29G 145M 26G 6% /var\x0d\/dev/mapper/vghome-lvhome\x0d\ 20G 26G 16G 15% /home\x0d\/dev/mapper/vgoradata-lvoradata\x0d\ 144G 48G 90G 35% /u01/oradata\x0d\/dev/mapper/vgbackup-lvbackup\x0d\ 193G 78G 175G 5% /u01/backup\x0d\\x0d\ok,问题解决,然后做下收尾工作就可以\x0d\ \x0d\-------------------------------------------------------------------------------------------------\x0d\ \x0d\学习下lsof命令\x0d\ \x0d\lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,不论什么事物都是文件,\x0d\设备是文件,文件夹是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。\x0d\ \x0d\lsof是linux最常常使用的命令之中的一个,通常的输出格式为:\x0d\ \x0d\引用\x0d\COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)