第5章 鲲鹏性能分析工具 5.1鲲鹏性能分析工具简介 系统性能的提升,需要综合考虑计算机硬件、操作系统、应用程序等多方面的因素,这些因素是互相影响的,要不断地调试、分析、调整相关参数,才能最终达到最优的系统性能。这一过程比较漫长,对人员的技术要求也比较高,很多情况下,调优人员在特定系统上花费了大量的时间,但是最终也不一定能达到性能的有效提升。不但如此,在系统出现故障或者异常时,要定位问题的位置、找到触发的原因也比较烦琐、困难。为了协助开发者和调优人员在鲲鹏系统上有效调优、诊断异常,华为推出了鲲鹏性能分析工具,支持鲲鹏平台上的系统性能分析、Java性能分析和系统诊断,提供系统全景及常见应用场景下的性能采集和分析功能,同时基于调优专家系统给出优化建议; 对于大部分不太复杂的场景,也可以使用调优助手进行快速调优,在工具的帮助下迅速找到解决问题的方法。 鲲鹏性能分析工具运行在鲲鹏平台的服务器上,支持IDE插件(Visual Studio Code)和浏览器两种客户端工作模式,该工具包括调优助手、系统性能分析工具、Java性能分析工具和系统诊断工具4个子工具,本书编写时,最新版本是2.3.T20版本,官方网站为https://www.hikunpeng.com/developer/devkit/hypertuner。 鲲鹏性能分析工具是鲲鹏开发套件中最重要、最复杂的工具,为了便于展开介绍,本书把该工具分成5个独立的章节,本章将总体介绍鲲鹏性能分析工具,其他4个章节将分别介绍调优助手、系统性能分析工具、Java性能分析工具和系统诊断工具。 5.2鲲鹏性能分析工具的安装 鲲鹏性能分析工具可以安装在基于鲲鹏916、鲲鹏920的服务器中,也可以安装在虚拟机或者Docker中,支持的操作系统包括openEuler、CentOS、Ubuntu等,为了简单起见,本书只演示在基于鲲鹏920的华为云ECS上,在CentOS 7.6的操作系统中安装鲲鹏性能分析工具,安装的工具版本为2.3.T20,详细步骤如下。 步骤1: 登录鲲鹏服务器,创建并进入目录/data/soft/,命令如下: mkdir -p /data/soft/ cd /data/soft/ 步骤2: 下载鲲鹏性能分析工具安装包,命令如下: wget https://mirror.iscas.ac.cn/kunpeng/archive/Tuning_kit/Packages/Hyper-tuner_2.3.T20_Linux.tar.gz 步骤3: 解压并进入安装包目录,命令如下: tar -zxvf Hyper-tuner_2.3.T20_Linux.tar.gz cd Hyper_tuner/ 步骤4: 执行工具安装,命令及回显如下: #./install.sh Start installing,please wait! Hyper_tuner Config Generate install tool: [1] : System Profiler, System Diagnosis, Tuning Assistant and Java Profiler will be installed [2] : System Profiler, System Diagnosis, Tuning Assistant will be installed [3] : Java Profiler will be installed Please enter a number as install tool. (The default install tool is all): 系统提示可选择安装的工具类型如下。 [1]: 同时安装系统性能分析工具、系统诊断工具、调优助手和Java性能分析工具。 [2]: 安装系统性能分析工具、系统诊断工具和调优助手。 [3]: 安装Java性能分析工具。 默认为同时安装所有4个工具,按Enter键继续,回显如下: Selected install_tool: all If the host name is not set, after installing the tool, the host name will be changed to Malluma. Do you want to continue the installation? [Y/N]: Y Enter the installation path. (The default path is /opt): 步骤5: 系统要求输入安装路径,默认为/opt,按Enter键继续,回显如下: Selected install_path: /opt ip address list: sequence_numberip_addressdevice [1] 172.16.0.154 eth0 Please enter the sequence number of listed ip as web server ip: 系统要求列出所有的IP地址,选择一个作为Web服务的IP地址,因为实际只有一个IP地址,这里选择1,回显如下: Selected web server ip: 172.16.0.154 Please enter install port. (The default install port is 8086): 系统要求输入端口号,默认为8086,按Enter键使用默认即可,回显如下: Selected nginx_port: 8086 ip address list: sequence_numberip_addressdevice [1] 172.16.0.154 eth0 Please enter the sequence number of listed as system profiler cluster server ip:1 系统要求选择一个IP作为系统分析服务IP,这里选择1,回显如下: Selectedsystem profiler cluster server ip: 172.16.0.154 Please enter the mallumad external ip(mapping IP): 系统要求输入mallumad的外部IP,直接按Enter键,回显如下: The server external ip is: 172.16.0.154 Please enter system profiler cluster server port. (The default system profiler cluster server port is 50051): 系统要求输入性能分析服务的端口,默认为50051,按Enter键使用默认即可,系统还要求输入映射的外部端口,可以直接按Enter键使用默认的50051: System profiler cluster server port: 50051 Please enter system profiler cluster server external port. (mapping port): System profiler cluster server external port: 50051 JAVA_HOME requirement: 1.JAVA_HOME is the parent path of bin. (Example: [JAVA_HOME]/bin/java) 2.The JRE version must be 11 or later. Please enter JAVA_HOME (The default JAVA_HOME is environment java,if not meet requirements,integration java of tool will be used): 系统需要Java环境,要求JRE版本必须是11或者更高的版本,这里要求输入JAVA_HOME的地址,如果没有,则会自动使用内置的Java环境,这里直接按Enter键: The JAVA_HOME is empty or check failed, environment java will be used. Java_version is 1.8.0_232 The environment java check failed, integration java of tool will be used. ip address list: sequence_numberip_addressdevice [1] 172.16.0.154 eth0 Please enter the sequence number of listed as java profiler cluster server ip: 系统检测到Java版本不满足要求,所以使用内置的Java环境,然后系统要求选择Java性能分析服务的IP地址,也选择1即可,然后系统会要求输入Java性能分析的外部IP,同样按Enter键: Selected java profiler cluster server ip: 172.16.0.154 Please enter the java profiler external ip(mapping IP): The java profiler external ip is: 172.16.0.154 Please enter java profiler cluster server port. (The default java profiler cluster server port: 9090): 系统要求输入Java性能分析服务的端口,默认为9090,直接按Enter键使用默认的端口,系统又提示输入Java性能分析服务的外部端口,也直接按Enter键使用9090: Selected java profiler cluster server port: 9090 Please enter java profiler cluster server external port. (mapping port): Java profiler cluster server external port: 9090 这样系统就开始安装工具和需要的软件包了。 步骤6: 安装过程中,系统要求自动安装有一定风险的软件包,回显如下: Some risky components, such as binutils and strace, will be automatically installed with the Kunpeng Hyper Tuner. If there is a source installation package, please add the installation path to the LD_LIBRARY_PATH or PATH environment variable. Do you allow automatic installation of these components? [Y/N]? 输入Y自动安装。 步骤7: 安装成功后的回显如下: Start hyper-tuner service success Hyper_tuner install Success ========================================================== The login URL of Hyper_Tuner is https://172.16.0.154:8086/user-management/#/login ========================================================== If 172.16.0.154:8086 has mapping IP, please use the mapping IP. 性能分析工具安装成功后,还需要确保使用的端口(默认8086)处于开通状态,详细的步骤可以参考2.2节“鲲鹏代码迁移工具的安装”的第4部分“开通端口”。 5.3鲲鹏性能分析工具的使用 这里通过在Windows操作系统上使用Chrome浏览器来演示鲲鹏性能分析工具公共功能的使用。 5.3.1登录鲲鹏性能分析工具 登录鲲鹏性能分析工具步骤如下。 步骤1: 在浏览器网址栏输入鲲鹏性能分析工具的网络地址,格式为https://IP: Port,本次演示使用的地址为https://121.36.5.199:8086/,读者可以根据自己实际使用的IP地址和端口号确定工具地址。 如果是第一次访问,则可能会出现如图51所示的连接警告信息。 图51连接警告信息 步骤2: 单击“高级”按钮,会出现高级连接信息,如图52所示。 图52高级连接信息 步骤3: 单击“继续前往121.36.5.199(不安全)”超链接,进入首次登录页面,如图53所示。 图53首次登录 对于首次登录,系统会提示创建管理员密码,管理员的账号名称为tunadmin,该名称不能修改。密码的复杂性要求如下。 (1) 必须包含大写字母、小写字母、数字及特殊字符(`、~、!、@、#、$、%、^、&、*、(、)、、_、=、+、\、|、[、{、}、]、;、:、'、"、,、<、.、>、/、?、)中两种及以上类型的组合。 (2) 长度为8~32个字符。 (3) 不能含空格。 (4) 密码不能在弱口令字典中。 在输入符合要求的密码并确认密码后,单击“确认”按钮,即可创建密码。 步骤4: 创建密码成功后,进入登录页面,如图54所示。 图54登录 输入用户名和密码,然后单击“登录”按钮,进入首页,如图55所示。 图55首页 这样就完成了鲲鹏性能分析工具的登录。 5.3.2用户管理 在鲲鹏性能分析工具首页的右上角,有一个齿轮标志,把鼠标放到该标志上,会显示配置菜单,如图56所示。 单击配置菜单的“用户管理”菜单项,进入用户管理页面,如图57所示。 图56配置菜单 图57用户管理 1. 添加用户 步骤1: 单击“新建”按钮,会弹出“新建用户”对话框,如图58所示。 图58新建用户 步骤2: 根据页面提示输入用户名、管理员密码、密码、确认密码,其中密码的复杂性要求如下。 (1) 必须包含大写字母、小写字母、数字及特殊字符(`、~、!、@、#、$、%、^、&、*、(、)、、_、=、+、\、|、[、{、}、]、;、:、'、"、,、<、.、>、/、?、)中两种及以上类型的组合。 (2) 长度为8~32个字符。 (3) 不能含空格。 (4) 不能是弱口令字典中的密码。 步骤3: 用户信息输入无误后,单击“确认”按钮,即可完成用户的创建。 2. 重置密码 步骤1: 单击要重置密码用户“操作”列的“重置密码”超链接,会弹出“重置密码”对话框,如图59所示。 图59重置密码 步骤2: 根据页面提示输入管理员密码、密码、确认密码,其中密码的复杂性要求和添加用户时的密码要求一样。 步骤3: 密码信息输入无误后,单击“确认”按钮,即可完成密码的重置。 3. 删除用户 步骤1: 单击要删除用户“操作”列的“删除”超链接,会弹出“删除用户”对话框,如图510所示。 图510删除用户 步骤2: 根据页面提示输入管理员密码,然后单击“确认”按钮,即可完成用户的删除。 5.3.3弱口令字典 单击如图56所示的配置菜单的“弱口令字典”菜单项,进入弱口令字典页面,如图511所示,具体的使用方法可以参考2.3.2节“迁移工具的常用配置”的第2部分“弱口令字典”。 5.3.4系统配置 单击如图56所示的配置菜单的“系统配置”菜单项,进入系统配置的公共配置页面,如图512所示。 图511弱口令字典 图512系统配置 各个配置项的说明如表51所示。 表51配置信息 配置项 说明 最大在线普通用户数 普通用户的最大同时登录数,管理员不受限制 会话超时时间(min) 如果在给定时间内没有在WebUI页面执行任何操作,则系统将自动退出,此时需输入用户名和密码重新登录WebUI页面 Web服务证书过期告警阈值(天) 服务器端证书过期时间距离当前时间的天数,如果超过该天数,则将给出告警 用户管理运行日志级别 记录日志的级别,默认记录WARNINGB及以上的日志 密码有效期(天) 密码的有效期,超过该时间需要修改密码,默认90天 单击各个配置项的“修改”按钮进入配置修改状态,可以修改原先的配置,然后单击“确认”按钮保存配置,如图513所示。 图513修改配置 5.3.5公共日志 单击如图56所示的配置菜单的“公共日志”菜单项,进入公共日志页面,如图514所示。 图514公共日志 日志分为两类,分别是操作日志和运行日志,操作日志的详细信息可以下载后查看,也可以在线直接查看; 运行日志是一个压缩包,叫作hypertunerusermanagement.zip,里面存储了程序运行过程中的必要信息,在程序出现异常时,可以帮助开发人员快速定位问题。管理员用户(tunadmin)可以查看和下载所有用户的操作日志及运行日志,普通用户只能查看和下载当前登录用户的操作日志。 5.3.6Web服务器端证书 单击如图56所示的配置菜单的“Web服务器端证书”菜单项,进入Web服务器端证书页面,如图515所示。 图515Web服务器端证书 1. 更换服务器端证书 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(访问方式为HTTPS),实现数据信息在客户端和Web服务器之间的加密传输,可以防止数据信息的泄露。及时更新证书,保证证书的有效性,可以提高系统的安全性。鲲鹏性能分析工具默认使用的是自带的证书,可以替换为使用者的证书,下面演示更换Web服务器端证书的过程,为了简单起见,使用的是使用者自己签名的证书,在实际使用中,可以使用SSL证书颁发机构颁发的证书。 步骤1: 准备证书制作环境。登录CentOS的证书生成服务器(x86或者鲲鹏架构都可以,也可以使用其他Linux发行版操作系统),安装openssl和上传下载工具lrzsz,命令如下: yum -yinstall openssl lrzsz 步骤2: 创建目录/data/soft/ca/并进入,命令如下: mkdir -p /data/soft/ca/ cd /data/soft/ca/ 步骤3: 生成根证书的私有密钥,命令如下: openssl genrsa -out ca.key 2048 步骤4: 生成根证书的CSR请求文件,在生成请求文件时,会提示输入签名的国家、省、市、组织及其他一些信息,演示的信息录入为国家: CN; 省: shandong; 市: qingdao; 组织: kunpeng,常用名: zhangl,其他的信息可直接按Enter键跳过,命令及回显信息如下: [root@book ca]#openssl req -new -key ca.key -out ca.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:shandong Locality Name (eg, city) [Default City]:qingdao Organization Name (eg, company) [Default Company Ltd]:kunpeng Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:zhangl Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 步骤5: 生成CA根证书,有效期1年,命令及回显如下: [root@book ca]#openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt Signature ok subject=/C=CN/ST=shandong/L=qingdao/O=kunpeng/CN=zhangl Getting Private key 得到的根证书为ca.crt。 步骤6: 生成CSR文件。单击如图515所示的“操作”列的“生成CSR文件”超链接,会弹出“生成CSR文件”对话框,按照提示输入国家、省份、城市、公司、部门、常用名信息,如图516所示。 图516生成CSR文件 步骤7: 单击“确认”按钮,将CSR文件保存到本地,默认文件名称为server.csr。 步骤8: 回到证书生成服务器,进入/data/soft/ca目录,可以使用rz命令上传server.csr文件。 步骤9: 防止生成证书时报错,执行证书生成前的辅助工作,命令如下: touch /etc/pki/CA/index.txt echo 01|tee /etc/pki/CA/serial 步骤10: 根据上传的证书请求文件server.csr,使用根证书ca.crt签名生成证书,生成的过程需要同意签名,即输入y,命令及回显如下: [root@book ca]#openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Aug 12 02:43:28 2021 GMT Not After : Aug 12 02:43:28 2022 GMT Subject: countryName= CN stateOrProvinceName = shandong organizationName = kunpeng commonName = zhangl X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 36:31:0A:0C:EA:CE:8C:47:6B:A6:4C:DC:37:2F:BC:9E:0A:6F:3A:AA X509v3 Authority Key Identifier: DirName:/C=CN/ST=shandong/L=qingdao/O=kunpeng/CN=zhangl serial:C5:A8:BA:5A:E2:3C:27:6A Certificate is to be certified until Aug 12 02:43:28 2022 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated 步骤11: 下载刚生成的证书文件server.crt,命令如下: sz server.crt 根据实际情况选择保存的路径。 步骤12: 单击如图515所示的“操作”列的“导入Web服务器端证书”超链接,会弹出导入Web服务器端证书的窗口,单击“导入”按钮,选择刚下载的server.crt证书,如图517所示。 图517导入Web服务器端证书 步骤13: 单击“确认”按钮,执行导入,出现导入成功的提示信息,如图518所示。 图518导入成功 图519重启服务 步骤14: 单击“更多”超链接,然后单击“重启服务”,会重新启动服务,如图519所示。 步骤15: 重启登录系统,看到更换证书后的页面如图520所示。 图520更换证书后的页面 这样就完成了证书的更换。 2. 更换工作密钥 工作密钥用于加密启动Nginx服务的口令,最好定期更换。单击如图519所示的“更换工作密钥”菜单项即可完成工作密钥的更换,要使密钥生效,也需要重启服务。 5.4鲲鹏性能分析工具的卸载 卸载鲲鹏性能分析工具时,需要确保没有正在执行的分析任务,否则可能会引起异常。详细的卸载步骤如下。 步骤1: 登录鲲鹏性能分析工具所在服务器。 步骤2: 进入鲲鹏性能分析工具的安装目录,默认为/opt/hyper_tuner/,命令如下: cd/opt/hyper_tuner/ 步骤3: 执行卸载命令hyper_tuner_uninstall.sh,默认情况下会全部卸载,也可以选择只卸载一部分分析工具,命令及回显如下: #hyper_tuner_uninstall.sh uninstall tool: [1] : System Profiler, System Diagnosis, Tuning Assistant and Java Profiler will be uninstall [2] : System Profiler, System Diagnosis, Tuning Assistant will be uninstall [3] : Java Profiler will be uninstall Please enter a number as uninstall tool. (The default uninstall tool is all): Selected uninstall_tool: all get hyper_tuner config You will remove all from your operating system, do you want to continue [ Y/[N] ]?y 5.5鲲鹏性能分析插件的安装与卸载 鲲鹏性能分析插件的名称为Kunpeng Hyper Tuner Plugin,安装步骤可参考2.4.1节“鲲鹏代码迁移插件的安装”; 卸载步骤可参考2.4.3节“鲲鹏代码迁移插件的卸载”。 5.6鲲鹏性能分析插件的配置 鲲鹏性能分析插件是一个客户端,如果要正常使用,则需要连接到安装了鲲鹏性能分析服务的远端服务器,详细配置步骤如下。 步骤1: 单击Visual Studio Code侧边栏的鲲鹏性能分析插件图标,会弹出鲲鹏性能分析插件对话框,如图521所示。 图521性能分析插件对话框 步骤2: 单击“配置服务器”按钮,此时会弹出“配置远端服务器”对话框,如图522所示。 图522配置远端服务器 这里IP地址和端口是在5.2节安装鲲鹏性能分析工具时确定的IP地址和端口,如果服务器是公网环境,这里则要使用公网的IP地址。服务证书可以指定根证书,也可以信任当前服务证书,这样就不用指定根证书了。配置完毕,单击“保存”按钮即可保存配置。需要注意的是,在配置正确的情况下可能会出现证书验证失败的信息对话框,如图523所示。 图523证书验证失败 要解决这个问题,可以将Visual Studio Code的“扩展”使用代理支持修改为关闭,详细步骤可以参考2.4.2节“鲲鹏代码迁移插件的使用”第2部分“配置服务器可能出现的问题”。