当前位置:   article > 正文

openstack调优_openstack 平台中修改 glance 服务的相关配置文件,将 glance 后端存

openstack 平台中修改 glance 服务的相关配置文件,将 glance 后端存

【cinder限速】

为了减缓来自实例的数据访问速度的减慢,openstack block storage支持对卷数据复制带宽的速率限制,请修改cinder后端配置文件将文件卷复制带宽限制为最高100MB/s

  1. # The upper limit of bandwidth of volume copy. 0 => unlimited (integer value)
  2. #volume_copy_bps_limit = 0
  3. volume_copy_bps_limit = 100000000
  4. #默认是字节每秒,这里从b开始算,这里添加单位无法启动。

然后重启服务即可,注意在计算节点上。

systemctl restart openstack-cinder-volume*

  1. backend_allow_tenant_qos = True
  2. #用于开启租户QoS,即在使用Cinder存储服务时,可以为不同的租户分配不同的服务质量(QoS),从而为不同的业务应用提供适当的服务质量保障。
  3. #若没有开启此选项,则无法使用租户QoS功能。

【dashboard调优】

安装dashboard服务后,将dashboard中的Djingo数据修改为存储在文件中(此种修改解决了All-in-one快照在其他云平台dashboard不能访问的问题)

  1. [root@controller ~]# vim /etc/openstack-dashboard/local_settings
  2. #编辑配置
  3. #搜索SESSION_ENGINE
  4. #SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
  5. SESSION_ENGINE = 'django.contrib.sessions.backends.file'
  6. #将其注释,更改为数据存储在文件中。
  7. #重启memcached,httpd即可。

【glance最大存储】

在openstack平台上,请修改glance后端配置文件,将用户的镜像存储配额限制为200GB

  1. [root@controller ~]# vim /etc/glance/glance-api.conf
  2. #user_storage_quota = 0
  3. user_storage_quota = 200GB
  4. #将其修改为用户镜像存储配置限制为200GB
  5. #这里的用是指租户。

然后重启服务即可。

systemct restart openstack-glance*

【虚拟机磁盘性能优化】

修改块设备I/O调度器默认值为none,在虚拟机当中相当于能直接访问宿主机磁盘。

  1. [root@test ~]# cat /sys/block/vda/queue/scheduler
  2. [root@test ~]# echo 'none' > /sys/block/vda/queue/scheduler

【虚拟机网络优化】

openstack使用的虚拟主机的网络都使用半虚拟化类型(设置在资源节点即可)

  1. vim /etc/nova/nova.conf
  2. # Use virtio for bridge interfaces with KVM/QEMU (boolean value)
  3. use_virtio_for_bridges=true

【虚拟机cpu优化】

想要优化kvm,从cpu方面就需要通过调整kvm的NUMA对应关系进行优化。

首先,查看kvm虚拟机的cpu信息

  1. [root@localhost work-dir]# virsh vcpuinfo vm2
  2. VCPU: 0
  3. CPU: 1
  4. 状态: running
  5. CPU 时间: 0.6s
  6. CPU关系: yyyy
  7. VCPU: 1
  8. CPU: 2
  9. 状态: running
  10. CPU 时间: 0.0s
  11. CPU关系: yyyy

上面的信息来看,这个虚拟机的cpu是双核的,cpu:代表着是跑在了物理机的cpu1和cpu2上,使用时间是0.6s,一个0.0s,yyyy是使用物理cpu内部的逻辑核,一个y就代表一个cpu的逻辑核。这里宿主机的逻辑核有4个。需要减少跨cpu的交互使用,从而提升虚拟机性能。

然后设置vm2的所有虚拟cpu都使用同一个宿主机的逻辑cpu

  1. virsh vcpupin vm2 虚拟cpu号 逻辑cpu号
  2. 例如:
  3. [root@localhost work-dir]# virsh vcpupin vm2 0 1
  4. [root@localhost work-dir]# virsh vcpupin vm2 1 1
  5. [root@localhost work-dir]# virsh vcpuinfo vm2
  6. VCPU: 0
  7. CPU: 1
  8. 状态: running
  9. CPU 时间: 39.6s
  10. CPU关系: -y--
  11. VCPU: 1
  12. CPU: 1
  13. 状态: running
  14. CPU 时间: 24.1s
  15. CPU关系: -y--

【nova调优详解】

  1. #超售比
  2. ram_allocation_ratio = 1.0
  3. #默认是1.5,内存分配超售比
  4. disk_allocation_ratio = 1.2
  5. #磁盘超售比例,默认是11
  6. cpu_allocation_ratio = 4.0
  7. #cpu超售比,建议超售4倍,vcpu可以比宿主机内核多4
  8. ###################################
  9. #预留量
  10. vcpu_pin_set = 4-%
  11. #%是物理机的cpu内核总数来决定的,比如上面这个
  12. #预留4个cup防止虚拟机跟组主机抢cpu资源
  13. reserved_host_memory_mb = 4096
  14. #预留的内存量,这部分内存不能被虚拟机所使用,单位是m
  15. reserved_host_disk_mb = 10240
  16. #磁盘预留量,这部分空间不能被虚拟机所使用,单位是m
  17. ###################################
  18. #服务下线时间
  19. service_down_time=120
  20. 服务下线时间阈值,单位是秒,如果一个节点上的nova服务超过这个时间没有上报数据库

【openstack内存优化】

关闭系统的内存共享,打开透明大页。

计算节点但可以配置cpu与内存的超配比例,但是一旦使用大页内存,内存便不能再进行超配。因为使用大页内存时,虚拟机内存页必须与主机内存页——映射,并且主机操作系统能通过swap分区分配大页内存,这也排除了内存超配的可能,大页内存的时候,意味着需要支持内存作为专用资源的虚拟机类型。

  1. #关闭系统内存共享
  2. [root@compute ~]# cat /sys/kernel/mm/ksm/run
  3. 0
  4. #这里run是设置ksm属性的状态,这里是0视为关闭。
  5. #而pages_shared,ksm正在使用的不可交换的内核页面数量。
  6. [root@compute ~]# cat /sys/kernel/mm/ksm/pages_sharing
  7. 0
  8. #关闭透明大页。
  9. [root@compute ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
  10. [root@compute ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
  11. #上面时物理机的路径,虚拟机的略有不同。
  12. #enabled是决定是否启用透明大页,而defrag是用于指定是否开启内存碎片整理
  13. always madvise [never]
  14. [root@compute ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
  15. [root@compute ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

【保留实例状态】

服务器意外断电,恢复供电后openstack虚拟机处于关闭状态,修改配置文件使openstack集群断电恢复后,实例重启为原先状态。修改资源节点。

  1. #修改nova配置
  2. vim /etc/nova/nova.conf
  3. resume_guests_state_on_host_boot=true
  4. #重启nova-compute服务。

【防止syn洪水攻击】

修改controller节点的相关配置文件,并开启SYN cookie,防止SYN洪水攻击

  1. #开启SYN Cookies
  2. [root@compute ~]# sysctl -a | grep _syn
  3. fs.xfs.inherit_sync = 1
  4. net.ipv4.tcp_max_syn_backlog = 512
  5. net.ipv4.tcp_syn_retries = 6
  6. net.ipv4.tcp_synack_retries = 5
  7. net.ipv4.tcp_syncookies = 1
  8. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  9. sysctl: reading key "net.ipv6.conf.default.stable_secret"
  10. sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
  11. sysctl: reading key "net.ipv6.conf.ens34.stable_secret"
  12. sysctl: reading key "net.ipv6.conf.lo.stable_secret"
  13. #查看_syn默认相关配置
  14. [root@compute ~]# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
  15. [root@compute ~]# sysctl -p
  16. net.ipv4.tcp_syncookies = 1
  17. #虽然syn默认开启,但是需要添加配置文件,最后生效。
  18. #开启syn可以防范少量的洪水攻击,0表示关闭。

【解决虚拟机排队】

太多虚拟机同时启动出现排队现象,导致虚拟机启动超时,从而获取不到ip地址而报错失败,通过调优设置解决问题。

编辑配置文件/etc/nova/nova.conf

  1. vif_plugging_is_fatal=true
  2. #将其修改为false

这里将vif_plugging_is_fatal设置为False时,关闭计算机节点的neutron-openvswitch-agent服务,虚拟机可以正常启动,但是端口为down,虚拟机也拿不到ip地址,启动ovs-agent后port状态立刻变为active,虚拟机可以拿到ip。

systemctl restart openstack-nova*

【自动清理镜像缓存】

在openstack平台的一台计算节点创建虚拟机,若是第一次在该节点创建此虚拟机,会先将镜像文件复制到该计算节点目录/var/lib/nova/instances/_base,长期下来,该目录会占用比较大的磁盘空间而需要清理,可以通过修改nova的配置文件来自动清理该缓存目录,即在该节点没有使用其镜像启动的云主机,那么这个镜像在过一定的时间后就会被自动删除

  1. [root@compute ~]# vim /etc/nova/nova.conf
  2. #remove_unused_base_images=true
  3. #remove_unused_original_minimum_age_seconds=86400
  4. #image_cache_manager_interval=2400
  5. #修改以上参数
  6. remove_unused_base_images=True
  7. remove_unused_original_minimum_age_seconds=3
  8. image_cache_manager_interval=5

remove_unused_base_images用于开启自动清理镜像缓存。

image_cache_manager_interval是为了缩短测试时间才需要设置,默认40分钟才检查一次

remove_unused_original_minimum_age_seconds也是为了缩短测试时间,默认是超过247个消失的无用base镜像才会被删除。

注意:三个选项都是在资源节点修改。

【linux脏数据回写时间】

inux用cache/buffer缓存数据,有回刷任务在适当时候把脏数据回刷到存储介质中,对不同的场景对触发回刷的需求也不一样,对io回刷触发时机的选择,是io性能优化的一个重要方法。

  1. #通过sysctl -p来进行修改,在/etc/sysctl.conf中写入参数
  2. vm.dirty_expire_centisecs = 3000
  3. #然后sysctl -p生效即可
  4. #注意单位为1/100 s

【僵死连接占用资源】

使用linux服务器的使用,TCP协议规定,对于已经建立的连接,网络双方要进行四次挥手才能成功断开连接,如果缺少了其中的某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放,因为服务器程序同时管理大量连接,所以很有必要保证无用的连接完全断开,否则大量僵死的连接会浪费许多服务器资源,创建一台centos7.9云主机,修改相应的配置文件,分别开启SYN Cookies;允许将TIME-WAIT sockets重新用于新的TCP连接;开启TCP连接中TIME-WAIT sockets的快速回收;修改系统默认的TIMEOUT时间为30

  1. #开启SYN Cookies
  2. [root@compute ~]# sysctl -a | grep _syn
  3. fs.xfs.inherit_sync = 1
  4. net.ipv4.tcp_max_syn_backlog = 512
  5. net.ipv4.tcp_syn_retries = 6
  6. net.ipv4.tcp_synack_retries = 5
  7. net.ipv4.tcp_syncookies = 1
  8. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  9. sysctl: reading key "net.ipv6.conf.default.stable_secret"
  10. sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
  11. sysctl: reading key "net.ipv6.conf.ens34.stable_secret"
  12. sysctl: reading key "net.ipv6.conf.lo.stable_secret"
  13. #查看_syn默认相关配置
  14. [root@compute ~]# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
  15. [root@compute ~]# sysctl -p
  16. net.ipv4.tcp_syncookies = 1
  17. #虽然syn默认开启,但是需要添加配置文件,最后生效。

设置TIME-WAIT

  1. [root@compute ~]# sysctl -a | grep net.ipv4.tcp_tw_
  2. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  3. net.ipv4.tcp_tw_recycle = 0
  4. net.ipv4.tcp_tw_reuse = 0
  5. #查看默认配置
  6. #net.ipv4.tcp_tw_reuse =1 表示开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。
  7. #net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets快速回收,默认为0,表示关闭。
  8. [root@compute ~]# sysctl -a | grep net.ipv4.tcp_fin
  9. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  10. net.ipv4.tcp_fin_timeout = 60
  11. #查看默认配置
  12. #表示系统默认的TIMEOUT时间

将上面的参数写入sysctl.conf,然后sysctl -p生效即可。

【修改最大句柄数】

Linux服务器最大并发时,往往需要预先调优linux参数,默认情况下linux最大文件句柄数为1024个,当前你的服务器在大并发达到极限时,就会报出“too many files“,创建一台云主机,修改相关配置,将控制节点的最大文件句柄数永久修改为65535

  1. #调优linux参数设置最大句柄数
  2. ulimit -n 655355
  3. #上面是临时生效的句柄数。
  4. [root@compute ~]# vim /etc/security/limits.conf
  5. * soft nofile 65535
  6. * hard nofile 65535
  7. #添加上面内容

【设置rabbitmq最大连接数】

分别通过用户级别、系统级别、配置文件来设置RabbitMQ服务的最大连接数

  1. #用户级别
  2. [root@compute ~]# vim /etc/security/limits.conf
  3. #* soft core 0
  4. #* hard rss 10000
  5. #@student hard nproc 20
  6. #@faculty soft nproc 20
  7. #@faculty hard nproc 50
  8. #ftp hard nproc 0
  9. #@student - maxlogins 4
  10. rabbitmq soft nofile 10240
  11. rabbitmq hard nofile 10240
  12. #系统级别
  13. [root@compute ~]# vim /etc/sysctl.d/99-sysctl.conf
  14. # sysctl settings are defined through files in
  15. # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
  16. #
  17. # Vendors settings live in /usr/lib/sysctl.d/.
  18. # To override a whole file, create a new file with the same in
  19. # /etc/sysctl.d/ and put new settings there. To override
  20. # only specific settings, add a file with a lexically later
  21. # name in /etc/sysctl.d/ and put new settings there.
  22. #
  23. # For more information, see sysctl.conf(5) and sysctl.d(5).
  24. fs.file-max=10240
  25. [root@compute ~]# sysctl -p /etc/sysctl.d/99-sysctl.conf
  26. fs.file-max = 10240
  27. #配置文件
  28. [root@controller ~]# vim /usr/lib/systemd/system/rabbitmq-server.service
  29. #在[service]下添加
  30. LimitNOFILE=10240
  31. [root@controller ~]# systemctl daemon-reload
  32. [root@controller ~]# systemctl restart rabbitmq-server
  33. systemctl stat[root@controller ~]# systemctl status rabbitmq-server
  34. ● rabbitmq-server.service - RabbitMQ broker
  35. Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
  36. Active: active (running) since 一 2022-10-31 22:30:30 CST; 3s ago
  37. Process: 25778 ExecStop=/bin/sh -c while ps -p $MAINPID >/dev/null 2>&1; do sleep 1; done (code=exited, status=0/SUCCESS)
  38. Process: 25643 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop (code=exited, status=0/SUCCESS)
  39. Main PID: 25787 (beam.smp)
  40. Status: "Initialized"
  41. CGroup: /system.slice/rabbitmq-server.service
  42. ├─25787 /usr/lib64/erlang/erts-8.3.5.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stb... ├─25998 erl_child_setup 10240
  43. ├─26014 inet_gethost 4
  44. └─26015 inet_gethost 4
  45. 1031 22:30:28 controller systemd[1]: Starting RabbitMQ broker...
  46. 1031 22:30:29 controller rabbitmq-server[25787]: RabbitMQ 3.6.16. Copyright (C) 2007-2018 Pivo...c.
  47. 1031 22:30:29 controller rabbitmq-server[25787]: ## ## Licensed under the MPL. See http...m/
  48. 1031 22:30:29 controller rabbitmq-server[25787]: ## ##
  49. 1031 22:30:29 controller rabbitmq-server[25787]: ########## Logs: /var/log/rabbitmq/rabbit@co...og
  50. 1031 22:30:29 controller rabbitmq-server[25787]: ###### ## /var/log/rabbitmq/rabbit@co...og
  51. 1031 22:30:29 controller rabbitmq-server[25787]: ##########
  52. 1031 22:30:29 controller rabbitmq-server[25787]: Starting broker...
  53. 1031 22:30:30 controller systemd[1]: Started RabbitMQ broker.
  54. 1031 22:30:30 controller rabbitmq-server[25787]: completed with 0 plugins.
  55. Hint: Some lines were ellipsized, use -l to show in full.

【数据库优化】

  1. vim /etc/my.cnf
  2. thread_concurrency = 64
  3. #CPU 核数 * 2
  4. max_connections=1500
  5. #最大连接(用户)数。每个连接 MySQL 的用户均算
  6. 作一个连接
  7. max_connect_errors=30
  8. #最大失败连接限制
  9. bulk_insert_buffer_size = 32M
  10. #批量插入数据缓存大小
  11. query_cache_type=1
  12. #查询缓存 (0 = off1 = on2 = demand)
  13. query_cache_size = 64M
  14. #指定 mysql 查询缓冲区大小
  15. max_allowed_packet = 128M
  16. #通信缓冲大小
  17. read_buffer_size = 8M
  18. #顺序读取数据缓冲区使用内存
  19. read_rnd_buffer_size = 32M
  20. #随机读取数据缓冲区使用内存
  21. innodb_buffer_pool_size=4G
  22. #设置innodb表的索引,数据,插入数据时的缓冲为4G
  23. innodb_log_buffer_size=64M
  24. #设置数据库日志缓冲。
  25. innodb_log_file_size=256M
  26. #设置redo log(物理日志)文件大小。
  27. innodb_log_files_in_group=2
  28. #设置redo log(物理日志)文件组为2
  29. #优化配置在mysqld下

可以通过检查数据库配置信息来获取要修改的值。

  1. show variables; #检查数据库配置信息。
  2. show variables like 'innodb%'; #使用like筛选固定的信息,%*相当。
  3. #可以根据要求的调优来专门查找信息然后配置进入my.cnf配置文件。

【memcached缓存修改】

  1. [root@controller ~]# cat /etc/sysconfig/memcached
  2. PORT="11211"
  3. USER="memcached"
  4. MAXCONN="1024"
  5. CACHESIZE="64" #memcached缓存大小
  6. OPTIONS="-l 127.0.0.1,::1,controller"
  7. [root@controller ~]# systemctl restart memcached

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/77745?site
推荐阅读
相关标签
  

闽ICP备14008679号