全国职业技能大赛云计算赛项---Linux系统调优案例_云计算应用 职业技能赛

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

全国职业技能大赛云计算赛项—Linux系统调优案例

Linux系统调优案例:

1.Linux系统句柄介绍
文件句柄,会随着进程数增加而增加。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈。
在Linux系统的生产环境中,会经常遇到“too many open files”的报错。这个报错顾名思义是打开过多文件数。不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。
在出现“too many open files”报错的时候,大多数情况是由于程序没有正常关闭一些资源引起的,所以出现这种情况,这个时候需要检查I/O读写,socket通讯等是否正常关闭等。当然也可以通过修改参数,将系统的文件句柄限制提高,来缓解这一压力。

2.Linux系统句柄优化
1.规划节点

IP 主机名节点
192.168.200.21 localhost实验节点

2.基础准备
登录云平台,进入实验自动分配一台CentOS 7.9云主机。使用云主机作为本次案例的实验节点。
(1)查看当前的句柄数
查看当前系统默认的文件句柄数量,所以优化句柄数量限制是很有必要的。命令如下:

[root@localhost ~]# ulimit -n
1024

可以看到系统默认限制是1024。系统默认的1024远远不够,会导致系统报“too many open files”的错误。

(2)修改句柄数.
修改Linux系统的句柄数限制有两种方法,一种是使用ulimit命令临时生效,另外一种是修改配置文件,永久生效。此处使用修改配置文件的方式。
注意:如果使用命令临时生效句柄限制,root用户可以调大或者调小句柄的限制,而非root用户一旦设定了值,就只能调小这个限制,不能调大,不然会报“bash: ulimit: open files: cannot modify limit: Operation not permitted”的错误。

修改配置文件调整句柄限制为65535,命令如下:

[root@localhost ~]# echo “* soft nofile 65535” >>/etc/security/limits.conf
[root@localhost ~]# echo “* hard nofile65535” >> /etc/security/limits.conf

添加配置的解释如下:
● *:代表所有用户。
● soft:超过文件句柄数时,仅提示。
● hard:超过文件句柄数时,直接限制。
修改完之后,不需要重启系统即会生效,但是需要重新登录。退出重新登录该云主机,查看当前的句柄限制,命令如下:

[root@localhost ~]# logout
Connection closed.
Last login: Tue Feb 801:58:31 2022 from 192.168.0.70
[root@localhost ~]# ulimit -n
65535

可以看到当前的限制为65535。

OpenStack平台调度策略优化:

1.规划节点

IP 主机名节点
192.168.200.11 controller控制节点

2.基础准备
根据云平台分配的主机All in one作为实验节点,该案例只研究云平台在大规模创建云主机遇到特定报错时的解决方法。
案例实施

1.OpenStack平台报错分析
在OpenStack平台经历大并发的时候,比如同一个平台,大量的用户同时创建云主机(单个用户创建大量云主机不会触发此种现象),会达到云平台的性能瓶颈,导致创建云主机报错。
大量用户同时创建云主机,会对云平台的两个服务造成性能瓶颈,一个是RabbitMQ,当RabbitMQ达到瓶颈时,会报如下错误:

ERROR oslo.messaging._drivers.impl_rabbit
[req-eb79ea09-247e-49e0-960b-0896ef978661 - - - - -]
[303415c0-e494-4ea2-8158-d66d4165600d] AMQP server on controller:5672
is unreachable: timed out. Trying again in 10 seconds.: timeout: timed
out

另一个就是DHCP。本案例重点讨论DHCP报错的情况,不考虑RabbitMQ的性能瓶颈。DHCP报错信息如下:

WARNING nova.compute.manager [req-8d9240cd-6a47-4979-a289-bdd58d399f0a
891c061e4aea4af8909a4affe0c24f92 c509a52800de4902845460fcc5318f3f -
8d899afee33641e0a094f85fbeb9b2c6 8d899afee33641e0a094f85fbeb9b2c6]
[instance: 374aa944-6cd7-4dbf-a741-5bd44623919d] Received unexpected
event network-vif-plugged-b803941a-c3ae-45d7-b962-13ba1ff00a31 for
instance with vm_state active and task_state None.

在这种情况下,因为大量的创建云主机,导致获取IP地址超时,然后就发生了如上的报错。

注意:这个报错还和计算节点的性能有关,大量创建云主机的时候,计算节点如果没有创建过该镜像的云主机,会先从控制节点复制镜像到计算节点,这也会导致速度变慢。而且在创建大量云主机的时候,对计算节点的硬盘也是一个考验,如果硬盘性能差的话,也会导致创建速度慢,大量排队,超时等现象。

2.解决策略
在解决问题之前,首先了解创建云主机的过程,在创建虚机过程中,Nova-compute会调用wait_for_instance_event函数(nova/compute/manage.py)进行network-vif-plugged的事件等待。
在Nova-compute配置文件中有两个与该事件相关的参数- vif_plugging_timeout、vif_plugging_if_fatal,前者是等待事件的最大时间,后者是处理超时异常的方式。若在规定时间内,Nova-compute接受到了事件响应,那么虚机可正常创建,那么当超时现象发生时,Nova-compute会根据vif_plugging_is_fatal的配置采取两种处理方式。

若超时发生,并且配置文件中vif_plugging_is_fatal为True,Nova首先执行guest.poweroff,停止Qemu进程;然后执行cleanup函数,先清除网络资源,使用函数_unplug_vifs,删除plug_vifs函数创建的ovs port,ovs agent检测到了删除端口的事件然后通知Neutron-server删除neutron db中的port信息,最后抛VirtualInterfaceCreateException。

如果vif_plugging_is_fatal为False,即便发生eventlet.timeout.Timeout异常,创建过程也会继续。然后等虚拟机创建成功后,依然可以拿到IP地址。
通过上述虚拟机创建的过程,对于上述云平台发生的错误,就有了解决的思路,通过修改/etc/nova/nova.conf配置文件,将vif_plugging_is_fatal参数由true改为false,命令如下:
修改/etc/nova/nova.conf配置文件:

[root@controller ~]# vi /etc/nova/nova.conf

找到如下这行:

#vif_plugging_is_fatal=true

将该行的注释去掉,并将true改为false,修改完之后如下:

vif_plugging_is_fatal=false

保存退出nova.conf,最后重启Nova服务,也可以重启所有服务,命令如下:

[root@controller ~]# openstack-service restart

等待重启完毕即可。通过该参数的修改,可解决在大并发量创建虚拟机时,因排队超时导致虚拟机获取不到IP地址的报错。

OpenStack平台镜像优化:

1.OpenStack平台制作镜像
在OpenStack平台的使用过程中,镜像是一个不可或缺的组件与服务,一般来说,使用最多的是基础镜像,比如CentOS7.5;CentOS7.6;CentOS7.9等,获取这些基础镜像的方式也很简单,可以通过官网直接下载。
当用户想使用自定义镜像的时候,可以使用OpenStack平台中打快照的方式,去制作镜像,比如想制作一个带有数据库服务的镜像(具体操作不再演示)。
2.OpenStack平台镜像优化
1.规划节点

IP 主机名节点
192.168.200.11 controller控制节点

2.基础准备
使用云平台分配的All in one作为实验节点,本案例只讲述如何优化通过打快照方式制作的镜像。
案例实施

1.OpenStack平台制作镜像
在OpenStack平台的使用过程中,镜像是一个不可或缺的组件与服务,一般来说,使用最多的是基础镜像,比如CentOS7.5、CentOS7.6、CentOS7.9等,获取这些基础镜像的方式也很简单,可以通过官网直接下载。
当用户想使用自定义镜像的时候,可以使用OpenStack平台中打快照的方式,去制作镜像,比如想制作一个带有数据库服务的镜像,可以按照如下步骤操作:(具体操作不再演示)
(1)启动一个基础的CentOS镜像;
(2)连接虚拟机,配置Yum源;
(3)安装数据库服务;
(4)初始化数据库;
(5)设置开机自启;
(6)在OpenStack平台中将该虚拟机实例打成快照;
(7)在控制节点的镜像和快照存放目录/var/lib/glance/images目录下找到这个镜像文件,改名成mysql.qcow2;
通过上述的方法打快照制作镜像,可以获得一个mysql.qcow2的镜像文件,使用该文件上传至其他云平台中,今后使用该镜像启动的虚拟机,就带有数据库服务了。

2.OpenStack平台镜像优化
在使用打快照方式制作镜像后,镜像的大小会变得非常大,比如一个基础的CentOS镜像大小为400M左右,但是使用打快照方式制作的镜像大小会有1个G左右,具体的大小还要根据安装的东西来实际情况实际分析。

qemu-img命令中提供一个可用于镜像转换与压缩的选项,即qemu-img convert。接下来使用该命令,对已经打快照完成的镜像进行压缩操作。
使用提供的镜像CentOS7.5-compress.qcow2,下载至controller节点的/root目录下,查看镜像的大小,命令如下:

[root@controller ~]# curl -O
http://mirrors.douxuedu.com/competition/CentOS7.5-compress.qcow2
[root@controller ~]# du -sh CentOS7.5-compress.qcow2
892M CentOS7.5-compress.qcow2

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值