【openstack排坑指南】 “too many open files” Linux系统文件句柄优化

简介: 【openstack排坑指南】 “too many open files” Linux系统文件句柄优化

一、前言

openstack中,不知道各位有没有遇到这样的情况,首先我们openstack平台是完整可用的,在我们平台使用过很长一段时间或平台使用的用户越来越多,文件句柄,会随着进程数也不断增加,其实Linux是有文件句柄限制的,而且Linux默认一般都是1024。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈。

在Linux系统的生产环境中,会经常遇到“too many open files”的报错。这个报错顾名思义是打开过多文件数。不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

这时我们又没有做任何系统优化,我们平台就报错了,准确的说是我们系统遇到了瓶颈,需要做出优化,修改句柄数。


二、排坑

1、报错信息

首先是dashboard界面登录报错,如图所示:

因为Dashboard是一个DJango的web应用程序,默认运行在Apache服务器上,相应的运行日志也都记录在Apache的日志中,可以在/var/log/httpd/中查看,查看日志报错如下:

这里可以看到出现IOError: [Errno 24] Too many open files 错误,修改句柄数解决。

$ cat /var/log/httpd/error_log
[Wed Jun 22 02:19:09.165363 2022] [:error] [pid 26490] IOError: [Errno 24] Too many open files #[Errno 24] 打开的文件太多
[Wed Jun 22 02:19:30.718258 2022] [:error] [pid 26490] INFO openstack_auth.plugin.base Attempted scope to domain demo failed, will attemptto scope to another domain.
[Wed Jun 22 02:19:30.809589 2022] [:error] [pid 26490] ERROR django.request Internal Server Error: /dashboard/auth/login/


2、解决方法

查看当前系统默认的文件句柄数量。

[root@controller ~]# ulimit -n
1024

修改句柄数,在limits.conf最后添加下列内容。

[root@controller-1 ~]# cat /etc/security/limits.conf
....
*                soft    nofile          65535
*                hard    nofile          65535

重新登录后句柄生效。

[root@controller ~]# ulimit -n
65535

重启openstack服务及http服务,最后再次访问dashboard界面。

[root@controller-1 ~]# openstack-service restart && systemctl restart httpd


我是无名小歌,欢迎加入云社区

(⊙o⊙),我们下期再见!!!


目录
相关文章
|
3天前
|
机器学习/深度学习 JSON JavaScript
在linux系统上看全世界新闻 -- Clinews的使用详解
这篇文章介绍了如何在Linux系统上使用Clinews命令行工具阅读全世界的新闻,包括安装、配置API密钥、使用命令获取新闻源和搜索新闻的步骤。
21 3
在linux系统上看全世界新闻 -- Clinews的使用详解
|
2天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
5天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
10天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
12天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
7天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
4天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
6天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
3天前
|
Docker 容器
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
11 1
|
7天前
|
监控 Linux
Linux系统中du命令与df命令的区别与用法
总的来说,`du` 和 `df` 在磁盘管理中互补使用,能够提供全面的磁盘空间使用信息,帮助用户和管理员有效地监控和管理系统资源。
18 3