建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

正品猫粮

发帖: 8粉丝: 0

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于7 天前 56 1 楼主 显示全部楼层
[WEB] 虚拟机场景memcached 调优指南(鲲鹏920)

1 调优概述

1.1 Memcached介绍

性能调优涉及因素很多,从操作系统、环境配置、基础软件,到网络、算法、编译选项,充分利用硬件资源以达到最大性能是我们的最终目的。

本文档主要用于指导如何在TaiShan服务器下,对系统参数、网卡中断、Memcached配置、进程部署做适当调整,使其在某种特定场景下达到性能最优。

Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款高性能的分布式内存缓存服务器,通常的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

官方链接:https://memcached.org/

1.2 调优原则

在性能优化时,需要遵循一定的原则,主要有以下几个方面:

  • 对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。

  • 一次只对一个性能指标参数进行调整。

  • 分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。

1.3 调优思路

性能调优首要要发现问题,找到性能瓶颈点,然后根据瓶颈所处层级选择优化的方法,下图介绍了Memcached的调优思路。

调优思路.jpg

调优分析思路如下:

  1. 对于服务端的问题,需要重点定位的硬件指标包括CPU、内存、硬盘、BIOS配置,其中CPU是需要重点关注的:服务端虚拟机CPU未压满或存在明显热点函数直接影响最终测试结果,需要注意的是虚拟机的CPU是否压满是在虚拟机内部查看,不是在host主机上查看;需要重点关注的软件指标包括应用软件、OS层的优化,该部分的调优对于性能的提升是很可观的。

  2. 对于网络问题,需要重点定位的包括网络带宽和网络中断,处理网络中断的核是否压满是需要重点关注的,http长连接场景需要重点关注网络带宽是否达到瓶颈。

  3. 对于客户端问题:客户端的性能是否满足测试需要,尤其对于http短连接场景。

2 操作系统调优


2.1 扩展文件描述符

目的

在Nginx环境中,需要配置最大打开文件数为102400,否则在测试过程中可能会导致软件最大打开文件数被限制在1024,影响服务器性能。

方法

方法1:永久设置。

            步骤1 输入:

            cat << _EOF >> /etc/security/limits.conf

            步骤2 输入:

            *    soft    nofile    102400

            步骤3 输入:

            *    hard   nofile    102400

                       

                            重启系统后,该方法生效。

方法2:临时设置。

            输入:

                ulimit -n 102400

                         

                           该设置只在当前会话中生效。

2.2 设置网卡ring_buffer队列

目的

设置网卡队列个数与CPU的core数目保持一致。

方法

    ethtool -L $eth1 combined $cnt

以Kunpeng920 96C的1P场景为例:

    ethtool -L eth0 combined 48

2.3 关闭透明大页

目的

关闭透明大页,避免内存分配延迟。

方法

方法1:

步骤 1 执行vim /etc/grub2-efi.cfg命令。

步骤 2 搜索字段

    vmlinuz-4.14.0-115.el7a.0.1.aarch64

            在该行最后加上语句,空格分隔

    transparent_hugepage=never

步骤 3 保存退出后,重启服务器。

步骤 4 执行如下语句

    cat /proc/cmdline

            查看语句是否生效,若输出结果中含有字段

    transparent_hugepage=never

            则表示已成功关闭透明大页。


方法2:

使用命令行

    echo never > /sys/kernel/mm/transparent_hugepage/enabled

2.4 设置虚拟机配置文件

目的

配置虚拟机的CPU、内存、网卡。

方法

步骤 1 编辑虚拟机配置文件。

            以虚拟机vm1为例,执行如下语句编辑虚拟机配置文件:

        virsh edit vm1

步骤 2 设置vcpu与物理cpu绑定。

           设置vcpu与物理cpu绑定的脚本如下所示:

        <vcpu placement='static' cpuset='0-3'>4</vcpu>
        <cputune>
        <vcpupin vcpu='0' cpuset='0'/>
        <vcpupin vcpu='1' cpuset='1'/>
        <vcpupin vcpu='2' cpuset='2'/>
        <vcpupin vcpu='3' cpuset='3'/>
        <emulatorpin cpuset='0-3'/>
        </cputune>

参数

说明

cpuset

表示物理核

vcpu

表示虚拟核


步骤 3 设置numa绑定。

           设置numa绑定的脚本如下所示:

        <numatune>
        <memnode cellid='0' mode='strict' nodeset='0'/>
        </numatune>
        <cpu mode='host-passthrough' check='none'>
        <topology sockets='1' cores='4' threads='1'/>
        <numa>
        <cell id='0' cpus='0-3' memory='12582912' unit='KiB'/>
        </numa>
        </cpu>

参数

说明

nodeset

表示物理机numa node

cellid

表示虚拟机numa node


步骤 4 设置PCIe网卡直通。

           设置PCIe网卡直通的脚本如下所示:

        <hostdev mode='subsystem' type='pci' managed='yes'>
        <source>
        <address domain='0x0000' bus='0x82' slot='0x00' function='0x0'/>
        </source>
        </hostdev>

            其中"domain"、"bus"、"slot"和"function"是对应物理网卡的信息,可以执行

        lspci

                或者

        ethtool -i 网卡名

              命令查看。

          

                                       

                            执行lspci,输出如下结果,只需关注最左侧的数字:

             “82:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)”

                            其中,网卡的bus-info是16进制数,由82:00:0可以看出,bus为0x82,slot为0x00,function为0x0,domain为0x0000。

步骤 5 设置静态大页

            1. 宿主机配置静态大页。

                在kernel启动时的cmdline添加配置参数,即在/boot目录下的grub.cfg 文件添加如下设置:

            transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=200

                          

                    配置1G的hugepage,需要当前宿主机页表大小为4K。


b4d2973d-a1a6-40f1-a1a6-79020d9763d1.png

        2. 添加xml配置。

            在xml文件中的添加如下配置信息:

            <memoryBacking>
            <hugepages>
            <page size=’ 1048576’ unit=’KiB’ nodeset=’0’/>
            </hugepages>
            </memoryBacking>

2.5 设置网卡中断绑核

目的

网卡中断绑核,绑定的核专门用于处理网卡中断,设置网卡队列个数与CPU的core数目保持一致。

方法

步骤 1 绑核前须关闭irqbalance。

   systemctl disable irqbalance
   systemctl stop irqbalance


步骤 2 获取IRQ号。

   grep enp130s0f0 /proc/interrupts | awk '{print $1,$NF}'

步骤 3 绑定IRQ到指定CPU核 

   echo 0 > /proc/irq/${irqNum}/smp_affinity_list






举报
分享

分享文章到朋友圈

分享文章到微博

阿奇@汪汪...

发帖: 8粉丝: 2

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于7 天前 沙发 显示全部楼层

大家注意区分,这里是虚拟机场景的。

物理机找另外一个帖子:https://bbs.huaweicloud.com/forum/thread-24610-1-1.html

点赞 回复 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册