执行openstack network list命令时提示Internal Server Error, HTTP 500的解决方法
问题现象描述
执行openstack network list命令时,提示如下信息:
日志文件“/var/log/neutron/server.log”提示如下信息:
oslo_messaging.rpc.server OperationalError: (pymysql.err.OperationalError) (1040, u'Too many connect
对应截图如下:
关键过程、根本原因分析
OpenStack一直处于调度中,数据库连接出现“Too many connections”,说明数据库最大连接数太小,当前已达最大连接数。
结论、解决方案及效果
- 打开MariaDB配置文件。
vim /etc/my.cnf.d/openstack.cnf
在[mysqld]字段下找到max_connections,设置max_connections = 4096。如下图所示:
- 修改系统最大文件打开数。
- 打开文件。
vim /etc/security/limits.conf
- 在文件中添加如下内容。
* soft nofile 65536 * hard nofile 65536
添加完成后,如下图所示:
- 编辑“/etc/pam.d/login”文件,并在文件中添加如下内容。
session required /lib/security/pam_limits.so
当用户完成系统登录后,Linux会调用pam_limits.so模块来限制该用户可使用的各种资源数量的最大值,包括可打开的最大文件数限制等。pam_limits.so模块会从“/etc/security/limits.conf”文件中读取配置。
- 设置系统可以打开的最大的文件句柄数。
ulimit -SHn 65536
- 打开文件。
- 设置系统最大值。
- 打开文件。
vim /etc/sysctl.conf
- 在文件中添加如下内容。
# max open files fs.file-max = 65536
- 使配置生效。
sysctl -p
- 打开文件。
- 修改数据库参数。
- 更改MySQL在Linux的最大文件描述符限制,编辑“/usr/lib/systemd/system/mariadb.service”文件,在[Service]下添加如下内容:
LimitNOFILE=65535 LimitNPROC=65535
- 使配置生效。
systemctl daemon-reload systemctl restart mariadb.service
- 修改数据库的最大连接数。
- 查看MySQL最大连接。
mysql> show variables like 'max_connections';
- 查看当前服务器正在使用的连接数。
mysql> show global status like 'Max_used_connections';
- 查看MySQL最大连接。
- 更改MySQL在Linux的最大文件描述符限制,编辑“/usr/lib/systemd/system/mariadb.service”文件,在[Service]下添加如下内容:
- 重启OpenStack服务。需要将每个服务都重启一遍,用户可以编写脚本来重启所有服务。
- 重启Neutron。
systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
- 重启Nova。
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
- 重启Glance。
systemctl restart openstack-glance-api.service openstack-glance-registry.service
- 重启Cinder。
systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service
- 重启Neutron。
父主题: OpenStack Stein