kaixin
Published on 2024-02-18 / 5 Visits
0

SonarQube工具

SonarQube

是什么:

  • 是devops中的一个测试阶段使用的扫描工具,SonarQube 就是一个自动化测试的框架,主要可以进行代码的质量进行扫描,可以通过jenkins工具借助进行实现自动化部署过程中的扫描操作,支持多语言(Java, Python, JavaScript, C, C++, Go, PHP…),可以和 CI/CD(Jenkins, GitLab CI, GitHub Actions 等)集成。它是分为社区版,企业版,可以先选用社区版(支持检测的语言类型较少)。

官方地址: https://www.sonarsource.com/

文档地址: https://docs.sonarsource.com/sonarqube-server/latest/

社区版文档: https://docs.sonarsource.com/sonarqube-community-build/

1.安装

  • 注意版本Java版本不同,不同的版本支持的数据库不同。

1-1.安装数据库

1.mysql下载
    官方地址:https://downloads.mysql.com/archives/community/

2.下载二进制文件
    wget -O /opt/mysql.tar.gz https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

3.卸载maridb的依赖,防止运行mysql数据库冲突
    yum clean all && yum makecache # 清除缓存下载新缓存
    yum remove -y mariadb-libs
    rm -rf /etc/my.conf
    yum install wget vim -y # 下载工具

4.解压缩配置mysql并且设置PATH环境变量
    tar -zxf  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.2
    ln -s  /opt/mysql-5.7.28-linux-glibc2.12-x86_64  /opt/mysql # 设置软连接
    # 设置全局环境变量
    vim /etc/profile
    PATH=/usr/local/mysql/bin/:${PATH}:/opt/mysql-5.7.2/bin/
    source /etc/profile # 重载
    which mysql # 验证环境变量

5.检查需要的依赖,安装依赖
    ldd /opt/mysql/bin/mysqld # 如果缺少就进行安装
    yum install -y libaio-devel 

6.创建数据存储目录与启动用户
    useradd -M -s /bin/nologin mysql
    mkdir -p /mysql_db/
    chown mysql.mysql -R /mysql_db/
    chown mysql.mysql -R /opt/mysql*
   
7.初始化数据库 # 默认无密码
    --user=指定启动进程用户
    --basedir=指定当前程序所在的根目录
    --datadir=指定当前数据库存储的目录
    mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql-5.7.28/ --datadir=/mysql_db/
    
    #错误: 上面命令出现错误:[ERROR] mysqld: unknown option ‘–initialize-insecure’
        mysqld --initialize --user=mysql --basedir=/opt/mysql-5.7.28/ --datadir=/mysql_db/
    # 如果还是错误:使用mysql_install_db进制命令进行mysql初始化
        mysql_install_db --user=mysql --basedir=/opt/mysql-5.7.28/ --datadir=/mysql_db/

8.创建配置文件
    vim /etc/my.cnf
    [mysqld]
    user=mysql
    basedir=/opt/mysql-5.7.28/
    datadir=/mysql_db/
    socket=/tmp/mysql.sock

    [mysql]
    socket=/tmp/mysql.sock

9.通过systemctl命令管理启动mysql
    将mysql提供的启动脚本拷贝到/etc/init.d/使用systemctl进行管理
    # 脚本:support-files/mysql.server 
    cp /opt/mysql/support-files/mysql.server  /etc/init.d/ # 拷贝
    systemctl daemon-reload # systemctl重新加载/etc/init.d/mysqld 这个脚本,才能启动
    systemctl start mysql # 就是通过systemctl 命令调用 /etc/init.d/mysql.server 脚本启动

10.连接数据库	
    mysql -uroot -p # 默认没有密码,根据版本不同初始化的情况不同有些有密码,有些没有。

11.设置root密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;

12.创建sonarqube的数据库
    mysql -uroot -p123456 -e 'create database sonar CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' # 创建
    mysql -uroot -p123456 -e 'show databases;' # 验证

image-20250915234858291


1-2.安装Sonarqube

1.安装前:又去内部嵌入了Elasticsearch。
    sysctl -w vm.max_map_count=524288 # 控制一个进程控制内存映射区最大数量
    sysctl -w fs.file-max=131072 # 打开全局文件描述符最大值
    ulimit -n 131072 # 用于管理用户级别的资源限制,每个进程可以打开的最大文件描述符数量
    ulimit -u 8192 # 用户最大可以创建的进程或者线程数

2.下载Sonarqube(当前使用的7.0版本) # 在文档中直接下载最新的社区版本
    下载文件地址:https://binaries.sonarsource.com/
    社区版的历史:https://binaries.sonarsource.com/?prefix=Distribution/sonarqube/

3.安装java # 注意需要根据官方提供的版本进行下载安装
    yum install -y java # 使用的是7.0 使用的java 8
    java -version # 版本查询

4.解压下载的sonarqube7.0,设置软连接
    unzip  sonarqube-7.0.zip # 解压
    ln -s /opt/sonarqube/sonarqube-7.0 /opt/sonarqube-7.0  # 设置软连接
    # 在这个目录下存在各种平台的执行程序,全部平台都兼容的
        ls ./sonarqube-7.0/bin 

5.设置账户专门启动sonarqube
    useradd -M -s /bin/nologin sonar
    chown sonar.sonar -R  /opt/sonarqube-7.0
    chown sonar.sonar -R  /opt/sonarqube

6.修改配置文件
    cp /opt/sonarqube-7.0/conf/sonar.properties{,.bak} # 拷贝配置文件
    vim /opt/sonarqube-7.0/conf/sonar.properties # 修改
    # 修改内容如下,主要修改数据
        sonar.jdbc.username=root
        sonar.jdbc.password=123456
        # 远程连接需要远程的授权账户jdbc:mysql://远程地址即可:3306/
        sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false


7.修改启动脚本文件
    # /opt/sonarqube-7.0/bin/linux-x86-64/sonar.sh 是sonarqube的启动脚本文件
    修改参数 RUN_AS_USER=sonar
    grep '^RUN_AS' /opt/sonarqube-7.0/bin/linux-x86-64/sonar.sh  # 查看是否修改成功
    
8.创建sonar脚本,让systemctl进行管理soanr
    cat >/usr/lib/systemd/system/sonar.service<<'EOF'
    [Unit]
    Description=sonar

    [Service]
    ExecStart=/opt/sonarqube-7.0/bin/linux-x86-64/sonar.sh start
    ExecStop=/opt/sonarqube-7.0/bin/linux-x86-64/sonar.sh stop
    Type=forking
    User=sonar
    Group=sonar

    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload 


9.启动sonarqube,查看
    systemctl start sonar # 默认端口是 9000

image-20250916001358957


1-3.关于Sonarqube的日志文件说明

1.日志文件目录
    ssonarqube-7.0/logs

2.日志文件有
    logs/ce.log # 计算引擎日志。记录代码分析报告的处理过程,比如你用 sonar-scanner 上传结果后,SonarQube 会在这里接收和处理。如果项目分析并没有出现展示可以查看这里报错
    logs/access.log  # 记录 HTTP 请求(方法、路径、响应码、耗时)。调试 API 调用、监控流量情况。
    logs/es.log # 内置 Elasticsearch 的日志。索引的创建、查询、存储相关的操作和错误。如果内存不足或者ulimit设置不当这里会报错
    logs/sonar.log # 主日志文件。要是进程启动、停止的信息,以及 JVM 参数、配置加载情况。通过这个日志确定是否正常启动或者为什么不启动。
    logs/web.log # Web 进程日志。和 Web 服务器 (Spring、Elasticsearch HTTP 接口、认证、UI 访问) 相关的事件。页面打不开,认证失败、端口冲突等问题,都可以从这里找。

2.使用

默认账户:admin
默认密码:admin

2-1.导入中文插件

官方插件说明:
    https://docs.sonarsource.com/sonarqube-server/latest/server-installation/plugins/plugin-version-matrix/
    
1.soanrqube的插件目录
    ssonarqube-7.0/extensions/plugins

2.将原来的插件进行备份
    cp -a /opt/sonarqube-7.0/extensions/plugins /opt/sonarqube-7.0/extensions/plugins_bak

3.在将准备的插件解压到这个 ssonarqube-7.0/extensions/plugins 文件夹内
    tar -zxf /opt/sonar_plugins.tar.gz -C /opt/sonarqube-7.0/extensions/ # 插件存在重复,需要删除重复的插件在进行启动

4.重启查看是否汉化
    systemctl restart sonar

image-20250917233508230


2-2.sonar创建第一个项目

# 登录后创建,在第一次登录时会出现手动创建项目,如果跳过后就无法在进行创建(社区版)。

1.通过sonar-scanner工具创建
    1.sonar扫描器的下载地址以及说明:
        https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
    
    2.在用户中创建一个令牌:
        6cefa0b325add1957963c4c9de4ec8553ccc5cc0
        
    3.解压下载的sonar-scanner,设置软连接,添加环境变量 sonar-scanner-4.0.0.1744-linux
        sonar-scanner -v # 在进行验证


2.通过sonar-scanner工具执行项目创建
    sonar-scanner \
    -Dsonar.projectKey=test123 \  # 设置项目的key,必须唯一,同一个 SonarQube 实例里不能重复
    -Dsonar.projectName=test123 \ # 设置项目的名称,只是显示使用,但是与key性质形同
    -Dsonar.sources=. \  # 源码所在的目录位置
    -Dsonar.host.url=http://192.168.85.152:9000 \ # 当前sonar服务器地址
    -Dsonar.login=6cefa0b325add1957963c4c9de4ec8553ccc5cc0 # 设置的令牌
     # 执行命令
    sonar-scanner -Dsonar.projectKey=test123  -Dsonar.projectName=test123  -Dsonar.sources=. -Dsonar.host.url=http://192.168.85.152:9000 -Dsonar.login=6cefa0b325add1957963c4c9de4ec8553ccc5cc0
 
 
3.简单理解这条命令参数作用
          sonar-scanner 就是需要安装的sonar扫描器的脚本
          根据 -Dsonar.host.url 找到当前的sonar服务器
          根据 -Dsonar.login 与sonar服务器进行一个登录认证
          根据 -Dsonar.sources 通过sonar扫描器进行扫描代码将数据上传mysql(其他版本可能不是mysql)数据库
          根据 -Dsonar.projectKey 将mysql数据库的【扫描代码数据】与这个【key的项目】进行绑定,那么数据就在这个项目中展示

image-20250918001032780


2-3.扫描器说明

image-20250918231508578

# sonar-scanner 就是 sonarqube的扫描器,也是客户端。将源代码(如 Java, Python, C#, JavaScript 等)发送到 SonarQube 服务器进行分析,并根据服务器上定义的代码质量规则生成检测报告。

# 注意:
    sonar要扫描的话,需要下载各个语言的插件,比如 python 或者 java 需要更多的插件支持,社区版的插件少,只有企业版的功能多(付钱)。另外版本也是问题,如果你的sonar的版本太低,很多插件不兼容。建议保留之前下载的插件存储。

image-20250918231854311


3.将soarn与jenkins进行结合使用

过程:

  1. 开发将代码存放到gitl仓库中。
  2. 测试在jenkins的工作区中对代码进行扫描,将扫描的结果发送给sonar服务端记录。
  3. 运维在进行构建部署操作。

机器准备:

机器地址 作用
192.168.85.152 部署sonar服务端(192.168.85.152:9000)
192.168.85.149 部署gitlab服务(192.168.85.149:80)
192.168.85.150 部署jenkins服务(192.168.85.150:8080)

image-20240103225343195

3-1.jenkins里添加sonarqube的凭证

# 作用:添加服务器地址和认证令牌

1.添加凭证 # 将sonar的令牌进行添加,注意需要jenkins支持sonarqube的插件
    系统管理 -> 系统设置

2.添加sonar的服务器地址,与sonarqube的名称。

3.添加sonar凭证,在选择添加的凭证并且保存。

image-20250918233932697


3-2.jenkins中设置sonar扫描器的路径

# 作用:在执行时,可以找到这个sonar扫描器命令进行执行

1.添加sonar的扫描器 
    系统 -> 全局工具 -> sonarqube server

2.添加扫描工具的路径和名称
    # 注意:
        1.如果是sonar是远程的话,需要在jenkins这个台服务器本地下载一个soran扫描工具
        2.如果是jenkins与sonar(安装服务端与扫描器)在一台机器上的话,就不需要安装

理解:说白了就是让jenkins执行这个 sonar-cli 的命令,所以需要当前服务器安装后扫描器的安装路径

image-20250918234959109


3-3.jenkins中添加构建

1.添加gitlab的仓库地址选择秘钥

2.添加sonar构建
     sonar.projectName=${JOB_NAME}   # 就是执行sonar时的名称 ${JOB_NAME} 就是当前job的项目名
     sonar.projectKey=html # 设置key
     sonar.sources=. # 因为jenkins操作都在工作目录(拉去代码或者其他操作),那么就使用当前目录
     
       命令对比:
        sonar-scanner \  
        -Dsonar.projectKey=linux0224 \  # 就是 sonar.projectName=${JOB_NAME}
        -Dsonar.projectKey=linux0224 \  # sonar.projectKey=html
        -Dsonar.sources=. \ # sonar.sources=.
        -Dsonar.host.url=http://192.168.19.100:9000 \ 
        -Dsonar.login=cd8b18aabedc1157f4856c62a17d8eca93f3a4d3 
        
        
3.需要将这个sonar构建操作,在部署建构之前
    1.开发先开发代码上传到gitlab
    2.测试进行测试功能(使用sonar代替)
    3.运维进行部署项目 # 当前测试没有这个操作,可以进行添加后续部署操作

image-20250919000719242


4.SonarQube新版安装

# 注意防火墙问题:
    systemctl stop firewalld
    systemctl disable firewalld


1.java环境与数据库要求:
    https://docs.sonarsource.com/sonarqube/latest/requirements/prerequisites-and-overview/

2.安装过程
    1.sonar新版安装zip包下载地址
        https://www.sonarsource.com/products/sonarqube/deployment/zip-file/
        
    2.关于数据参数配置说明
        https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/installing-sonarqube-from-zip-file/

    3.安装PostgreSQL
        https://www.postgresql.org/ftp/source/

    4.安装对应版本java

3.安装源与基本工具
    1.配置阿里源
        mkdir -p /etc/yum.repos.d/repos && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repos
        curl  -s -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
        curl  -s -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
        yum clean all
        yum makecache
    
    2.安装基础库
        yum install vim curl gcc make glibc-devel net-tools wget -y

image-20240105223758856


4-1.安装数据库

# PostgreSQL 为例:

1.下载数据库
    wget https://ftp.postgresql.org/pub/source/v15.0/postgresql-15.0.tar.gz

2.解压
    tar -zxf  postgresql-15.0.tar.gz && mv postgresql-15.0  postgresql15

3.安装依赖环境
    yum install autoconf automake openssl-devel zlib-devel libxml2-devel libjpeg-devel libpng-devel libcurl-devel libxslt-devel icu-devel libselinux-devel openldap-devel perl libperl-devel readline-devel

4.进入解压文件,编译源码
    # 一定要查看他的安装说明,进行安装环境
    cd postgresql15 && mkdir -p /usr/local/postgresql && ./configure --prefix=/usr/local/postgresql
    make && make install 
    
5.添加一个用户以存储数据的文件夹
    useradd  postgre
    mkdir /postgre_data
    # 对数据文件进行授权
    chown postgre.postgre /postgre_data

6.设置环境变量
    echo "export PATH=${PATH}:/usr/local/postgresql/bin/" >> /etc/profile
    source /etc/profile
    
7.初始化数据库
    su - postgre
    initdb -D /postgre_data

8.启动测试
    # 使用初始化命令进行启动
    pg_ctl -D /postgre_data -l logfile start
    createdb test
    psql test

4-2.数据库的配置

1.当安装后,数据库配置文件会存储到初始化数据库的目录中
    #port = 5432	 默认监听地址为5432
    # postgre_data 初始化数据目录
    /postgre_data/postgresql.conf  # 配置PostgreSQL数据库服务器的相应的参数。  
    /postgre_data/pg_hba.conf       # 配置对数据库的访问权限。

2.修改数据库配置,可以远程访问
    vim /postgre_data/postgresql.conf
        listen_addresses = 'localhost' 改为 listen_addresses = '*' # 修改
    
    vim /postgre_data/pg_hba.conf
        host    all             all         0.0.0.0/0          trust # 添加

3.使用systemctl管理prosgre
    # 所在目录
        /opt/postgresql15/contrib/start-scripts/
    
    1.拷贝脚本
        cp /opt/postgresql15/contrib/start-scripts/linux  /etc/init.d/postgresql
    
    2.设置执行权限
        chmod a+x /etc/init.d/postgresql
    
    3.修改脚本中得两个变量
        vim /etc/init.d/postgresql
        1.prefix="数据安装所在的家目录"
        2.PGDATA="初始化数据库文件所在的目录"
        3.PGUSER="初始化数据目录授权用户"
        
    4.重载systemcl
        systemctl daemon-reload

4.启动数据库
    systemctl start postgre
    
    
6.切换用户,创建授权用户与数据库
    su - postgre
    # 进入命令行(进入你当前用户名所对应的数据库,如果你的用户名是自定义的,请使用createdb 数据库),如果出现错误,请使用createdb 数据库,比如当前我的postgre,就需要创建一个数据库名为postgre,然后输入psql进入命令才可以,默认自带的数据库是postgres
    psql
    create user pg password 'pg';
    ALTER ROLE pg SUPERUSER;
    create database sonar;

4-3.安装java

1.下载:
    https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
    # 使用rpm安装,简单速度快
    wegt https://download.oracle.com/java/17/archive/jdk-17.0.9_linux-x64_bin.rpm

2.解压,当前下载的时解压即用的
    yum -y loaclinstall jdk-17.0.9_linux-x64_bin.rpm

3.查看版本
    java -version

4-4.安装Sonarqube

1.下载
    wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.3.0.82913.zip

2.解压,设置一个软连接
    unzip  sonarqube-10.3.0.82913.zip 
    ln -s /opt/sonarqube-10.3.0.82913 /usr/local/sonarqube
    
3.创建启动用户,设置授权
    useradd -M -s /bin/nologin sonar
    chown sonar.sonar -R /opt/sonarqube-10.3.0.82913

4.配置文件设置
    1.备份配置文件
        cp /opt/sonarqube-10.3.0.82913/conf/sonar.properties{,.bak}
    
    2.修改配置
        cat > /opt/sonarqube-10.3.0.82913/conf/sonar.properties << 'EOF'
        sonar.jdbc.username=pg
        sonar.jdbc.password=pg
        # 远程连接需要远程的授权账户
        sonar.jdbc.url=jdbc:postgresql://localhost/sonar
        EOF


5.脚本中需要java的变量 # 添加显式配置
    echo "export SONAR_JAVA_PATH=/usr/bin/java" >> /etc/profile


6.启动sonar,进行访问 # 还是可以设置成为一个systemctl管理的脚本进行操作
    bash /opt/sonarqube-10.3.0.82913/bin/linux-x86-64/sonar.sh start

# 注意:添加中文插件/获取其他插件
    如果下载失败,可能是网络问题,需要在,查看下载失败报错日志,根据提示,获取url,在自己的电脑上下载,然后上传到 /opt/sonarqube-10.3.0.82913/extensions/plugins,重启sonar即可。

image-20250921231004050


4-5.sonar-cli扫描器

1.创建项目 # 可以进行手动创建项目

2.创建项目,使用cl工具 
    1.下载扫描器
        https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
        https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
        
    2.解压
    
3.设置环境变量
    # 设置token值
    export SONAR_TOKEN=sqp_831f44d43ecabc4192ee4baac4be91de37e729da
    # 设置环境变量
    echo "export PATH=${PATH}:/opt/sonar-scanner-5.0.1.3006-linux/bin/" > /etc/profile
    source /etc/profile

4.执行命令
    sonar-scanner \
    -Dsonar.projectKey=linuxsonar \
    -Dsonar.sources=. \
    -Dsonar.host.url=http://192.168.19.138:9000

image-20250921231535411


4-6.安装问题

4-6-1.问题1

问题内容:
2024.01.05 13:40:38 ERROR es[][o.e.b.Elasticsearch] node validation exception
[2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.11/bootstrap-checks.html]
bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.11/_file_descriptor_check.html]
bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.11/_maximum_map_count_check.html]


1.文件描述符不足(进程可以打开的最大文件(文件/资源)数量的值,进程达到了后无法再打开新的文件了)
    # max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    
    1.使用 root用户 修改内核参数
        vim /etc/sysctl.conf
        fs.file-max = 65535 # 添加
    
    1.切换到启动 "elasticsearch" 用户查看 # elasticsearch进程启动的用户
        ulimit -n
        
    2.切换root用户修改
        vim /etc/security/limits.conf  # 打开文件
         # user 是运行 elasticsearch 进程启动用户
        <username> soft nofile 65535 # 软限制:立即生效为65535
        <username> hard nofile 65535 # 硬限制:最高也只能到65535
        
        例如:用户是 elasticsearch 就这样设置
            elasticsearch soft nofile 65535 # 软限制:立即生效为65535
            elasticsearch hard nofile 65535 # 硬限制:最高也只能到65535
            
        # 补充:关于sofr与hard的说明
            soft:
                1.当前用户会话实际生效的限制值。进程打开的文件描述符数量不能超过这个值。
                2.目的:作为当前的、可调整的操作限制。
                3.用户可以通过 ulimit -n <新值> 临时调整值
            hard:
                1.Soft Limit 能够设置的上限。用户不能自行将 Soft Limit 调整得比 Hard Limit 还高。
                2.目的:防止用户或进程无限制地消耗系统资源,提供最终的安全保障。
                3.只有 root才能修改这个hard这个值
                
            理解:
                <username> soft nofile 65535  # 默认生效65535
                <username> hard nofile 131072 # 但允许在需要时临时翻倍,最高的可以打开文件描述符的值最大就是131072,只有root可以设置值的大小。
                1.普通用户只能在自己的会话中将 Soft Limit 调高(但不能超过 Hard Limit 的 131072)
                2.root用户可以 Hard Limit 的值
                
            
    4.root用户重新加载
        sysctl -p
    
    5.切换 "elasticsearch" 用户是否生效
        ulimit -n
 
 
 2.虚拟内存映射区域数量不足
    # vm.max_map_count [65530] is too low, increase to at least [262144];

    1.切换root 用户修改 vm.max_map_count 
        echo "vm.max_map_count=262144" >> /etc/sysctl.conf # 永久修改
        sudo sysctl -w vm.max_map_count=262144 # 临时修改
        
        # 说明:vm.max_map_count 是 Linux 内核参数
            1.它定义了一个进程可以拥有的内存映射区域(Memory Map Areas) 的最大数量。
            2.Elasticsearch 严重依赖内存映射文件来高效访问索引数据。如果这个值太低,会导致无法创建新的索引或甚至使节点崩溃。
        # 理解:
             vm.max_map_count:进程在内存中使用的映射到磁盘的真实数据所在位置的一个索数量,它是在内存中存储。限制开启这个索引数量值。
             可以理解为它是一本数据的目录,只记录书某章节标题对应的具体页面,不记录任何内容(就是索引),Elasticsearch可以根据它快速的找到用户需要的内容。(数值越大,Elasticsearch管理的内容就越多)。
             
    2.root用户重新加载
        sysctl -p

    3.进行查看确认
        sysctl -p
        vm.max_map_count = 262144

image-20240106024233888


4-6-2.问题2

# 无法以root启动
解决方式:
    创建一个用户,对sonar目录进行授权,切换到这个用户来启动sonar

image-20250921234658076