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

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

确定
我再想想
选择版块

正品猫粮

发帖: 8粉丝: 0

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于7 天前 57 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 配置BIOS

目的

对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器性能。

方法

步骤 1 关闭SMMU。

                

                

                    此优化项只在非虚拟化场景使用,在虚拟化场景,则开启SMMU。

    1. 重启服务器,按Esc键进入BIOS,选择“Advanced > Misc Config”,按Enter进入。

    2. 将“Support Smmu”设置为“Disable”,保存退出(永久有效)。

步骤 2 关闭预取。

    1. 重启服务器,按Esc键进入BIOS,选择“Advanced>MISC Config”,按Enter进入。

    2. 将“CPU Prefetching Configuration”设置为“Disabled”,保存退出。

3 操作系统调优


3.1 扩展文件描述符

目的

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

方法

方法1:永久设置。

            步骤1 输入:

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

            步骤2 输入:

            *    soft    nofile    102400

            步骤3 输入:

            *    hard   nofile    102400

                       

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

方法2:临时设置。

            输入:

                ulimit -n 102400

                         

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

3.2 关闭透明大页

目的

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

方法

方法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

3.3 设置网卡ring_buffer队列

目的

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

方法

    ethtool -L $eth1 combined $cnt

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

    ethtool -L eth0 combined 48

3.4 设置memcached服务的亲和性

目的

业务绑核,绑定的核专门用于处理业务。

方法

以物理机1P场景为例,使用numactl设置CPU与内存的亲和性。

            vim /usr/lib/systemd/system/memcached.service   
                     
            ExecStart=/usr/bin/numactl --cpunodebind=0,1 --membind=0,1 
            
            /opt/memcached/bin/memcached -t 48 -p 11211 -u root -m 122880 -c 100000

3.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 天前 沙发 显示全部楼层

猫粮哥帖子描述详细很全面

点赞 回复 举报

游客

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