服务器配置:4核16G内存5M带宽
使用使用
wget -qO- bench.sh | bash
命令进行I/O测试和网速测试
配置参数
磁盘IO
平均IO为 112.7MB/s
网速测试
下行40Mbps,上行7Mbps
使用speedtest-cli进行测速:下载速度9.11Mbit/s,上传速度6.48Mbit/s
网络延迟
使用网络延迟测速网站进行测试,测试结果如下:
国内大部分线路延迟正常
内存压测
可以使用我编写的python脚本进行测试:
内存最大分配到16GB,才kill,不错。
性能测试
下载安装跑分软件:UnixBench
# 下载
wget https://github.com/aliyun/byte-unixbench/releases/download/v5.1.6/UnixBench-5.1.6.tar.gz
# 解压
tar -zxvf UnixBench-5.1.6.tar.gz
# 运行,从releases下载的是已经编译好了的
cd UnixBench-5.1.6/UnixBench
./Run
初次运行可能会报错
这个错误提示表明在运行
./Run
脚本时,系统无法找到 Perl 解释器。UnixBench 脚本 Run
是一个 Perl 脚本,需要在系统上安装 Perl 解释器才能正确运行。
如果Linux下载太慢,可以在Windows科学上网下载后再上传到liunx
我的单核得分1096.6,多核2959.8,
========================================================================
BYTE UNIX Benchmarks (Version 5.1.6)
System: lavm-1nqyvimnov: GNU/Linux
OS: GNU/Linux -- 5.14.0-70.13.1.el9_0.x86_64 -- #1 SMP PREEMPT Wed May 25 21:01:57 UTC 2022
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz (4788.7 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 1: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz (4788.7 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 2: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz (4788.7 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 3: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz (4788.7 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
15:09:43 up 3:58, 2 users, load average: 0.05, 0.09, 0.12; runlevel 2024-07-18
------------------------------------------------------------------------
Benchmark Run: Thu Jul 18 2024 15:09:43 - 15:37:47
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 39531447.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 6451.6 MWIPS (10.0 s, 7 samples)
Execl Throughput 3239.7 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 727343.6 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 208517.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1471691.8 KBps (30.0 s, 2 samples)
Pipe Throughput 1004184.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 76331.1 lps (10.0 s, 7 samples)
Process Creation 7120.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5881.8 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1926.4 lpm (60.0 s, 2 samples)
System Call Overhead 665226.0 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 39531447.2 3387.4
Double-Precision Whetstone 55.0 6451.6 1173.0
Execl Throughput 43.0 3239.7 753.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 727343.6 1836.7
File Copy 256 bufsize 500 maxblocks 1655.0 208517.9 1259.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 1471691.8 2537.4
Pipe Throughput 12440.0 1004184.0 807.2
Pipe-based Context Switching 4000.0 76331.1 190.8
Process Creation 126.0 7120.8 565.1
Shell Scripts (1 concurrent) 42.4 5881.8 1387.2
Shell Scripts (8 concurrent) 6.0 1926.4 3210.7
System Call Overhead 15000.0 665226.0 443.5
========
System Benchmarks Index Score 1096.6
------------------------------------------------------------------------
Benchmark Run: Thu Jul 18 2024 15:37:47 - 16:05:53
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 145017678.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 25546.9 MWIPS (10.0 s, 7 samples)
Execl Throughput 9992.1 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1241200.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 335868.6 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 2852249.3 KBps (30.0 s, 2 samples)
Pipe Throughput 3762083.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 331504.5 lps (10.0 s, 7 samples)
Process Creation 30980.7 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 15187.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1977.7 lpm (60.0 s, 2 samples)
System Call Overhead 2221099.3 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 145017678.9 12426.5
Double-Precision Whetstone 55.0 25546.9 4644.9
Execl Throughput 43.0 9992.1 2323.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 1241200.7 3134.3
File Copy 256 bufsize 500 maxblocks 1655.0 335868.6 2029.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 2852249.3 4917.7
Pipe Throughput 12440.0 3762083.4 3024.2
Pipe-based Context Switching 4000.0 331504.5 828.8
Process Creation 126.0 30980.7 2458.8
Shell Scripts (1 concurrent) 42.4 15187.4 3581.9
Shell Scripts (8 concurrent) 6.0 1977.7 3296.1
System Call Overhead 15000.0 2221099.3 1480.7
========
System Benchmarks Index Score 2959.8
DB压测
创建具有管理权限的非root用户
-
登录为root用户:
ssh root@your_server_ip
或者在服务器本地登录。
-
创建新用户: 假设我们要创建一个用户名为
adminuser
的用户:useradd -m -s /bin/bash adminuser
-m
:创建用户的同时创建家目录。-s /bin/bash
:指定用户的登录shell为bash。
-
设置用户密码:
passwd adminuser
输入并确认密码。
-
赋予sudo权限: 编辑sudoers文件,添加用户到sudo组:
visudo
在文件中找到以下行:
## Allow root to run any commands anywhere root ALL=(ALL) ALL
下面添加一行,允许adminuser使用sudo:
adminuser ALL=(ALL) ALL
保存并退出。
-
切换用户:
su - adminuser
使用新创建的用户登录,验证sudo权限是否生效:
sudo ls /root
输入密码验证sudo权限是否正常工作。
安装mysql8 之前最后是根据上面的步骤新增一个用户并指定权限:
-- 查看密码验证插件:
SHOW VARIABLES LIKE 'validate_password%';
-- 设置密码复杂程度为low:
set global validate_password.policy=0;
-- 设置密码长度最小为1:
set global validate_password.length=1;
-- 使用CREATE USER语句创建用户并设置密码,语法如下:
create user 'test'@'%' identified BY 'test';
创建用户 'test'@'%': 这会创建一个用户名为 test,可以从任何主机(%)连接到MySQL服务器,密码为 test。
-- 使用GRANT语句为用户授予权限,语法如下:
GRANT ALL PRIVILEGES ON . TO 'test'@'%' WITH GRANT OPTION;
1.ALL PRIVILEGES: 授予用户对所有数据库(.)的所有权限。
2.WITH GRANT OPTION: 允许用户将其拥有的权限授予给其他用户。
-- 自 5.7.6 版本开始不再支持使用 PASSWORD() 函数来设置密码。
ALTER USER 语句来更改用户的密码: ALTER USER 'test'@'%' IDENTIFIED BY 'test1';
-- MySQL8.0.16版本中新增了一个system_user帐户类型,当新增用户并赋予权限时
-- 会报:
> 1227 - Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation
-- 原因是由于root用户没有SYSTEM_USER权限,把权限加入后即可解决 grant system_user on . to 'root';
-- 刷新 MySQL 的系统权限相关表(貌似mysql 8之后就不用执行了): flush privileges;
-- 查看防火墙是否放通了mysql服务
sudo firewall-cmd --zone=public --list-services
-- 允许MySQL服务,如果MySQL服务未在允许的服务列表中,你可以添加它:
sudo firewall-cmd --zone=public --add-service=mysql --permanent
-- 然后重新加载防火墙配置使更改生效:
sudo firewall-cmd --reload
使用HammerDB进行压测
下面是HammerDB的安装和简介
最新版4.11官方下载地址
在opt目录下新增一个Installtion_Package目录,然后将下载好的文件上传到这
权限配置以及安装
chmod +x HammerDB-4.11-Linux-x64-installer.run
./HammerDB-4.11-Linux-x64-installer.run
然后执行./hammerdb命令时报错
运行 HammerDB 时遇到的
libxft.so.2
库文件缺失问题,通常是因为系统中缺少必要的库文件。你可以通过安装缺少的库文件来解决这个问题。
在 Rocky Linux 9 上安装缺失的库文件
libxft.so.2
是 Xft 库的一个共享对象文件,它通常包含在 libXft
包中。要安装这个包,可以使用以下命令:
-
更新包列表:
sudo dnf update
-
安装
libXft
库:sudo dnf install libXft
验证安装
安装完成后,可以验证是否已正确安装 libxft.so.2
:
ls /usr/lib64/libXft.so.2
如果命令输出包含 libXft.so.2
,说明库文件已经正确安装。
重新运行 HammerDB
尝试再次执行./hammerdb命令时又报错
这表明系统可能没有安装图形用户界面(GUI)。
为了确保系统默认启动到多用户目标(即没有图形界面)但仍然可以使用图形界面登录,可以使用以下配置:
-
安装GNOME图形环境:
dnf groupinstall "Server with GUI"
-
设置系统默认启动到多用户目标:
设置系统默认启动到多用户目标(即命令行模式),但保留图形界面可用:
systemctl set-default multi-user.target
-
启用GDM(GNOME Display Manager) :
启用GDM以便在需要时启动图形界面登录:
systemctl enable gdm
-
手动启动图形界面:
这样系统默认启动到命令行模式,但你仍然可以通过以下命令手动启动图形界面:
systemctl start gdm
dnf groupinstall "Server with GUI"执行后重启会导致系统默认nmcli中的连接被删除
安装成功后,需要执行systemctl set-default graphical,然后reboot重启进入图形化界面,在图形化界面进入setting,找到language将语言切换到中文,然后重新登录,在网络中新建有线,全部设置自动后就可以正常连接了
- 配置HammerDB压测MySQL的环境变量
#安装MySQL 社区版的开发库包。它包含了开发 MySQL 应用程序所需的头文件和库文件。
#安装这个包后,开发者可以编写、编译和链接使用 MySQL 数据库的应用程序。
dnf install mysql-community-devel
#找到安装的MySQL客户端库的位置以及查找MySQL Server的安装路径:
find /usr -name "libmysqlclient*.so*"
which mysql
#MySQL客户端库的位置在/usr/lib64/mysql/ MySQL Server的安装路径在/usr/bin
export LD_LIBRARY_PATH=/usr/lib64/mysql:$LD_LIBRARY_PATH
#为了使这个设置在每次登录时都生效,可以将其添加到 `.bashrc` 或 `.bash_profile` 文件中:
echo 'export LD_LIBRARY_PATH=/usr/lib64/mysql:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
#设置`PATH`环境变量
#确保 `mysql` 命令在你的 `PATH` 中:
export PATH=$PATH:/usr/bin
source ~/.bashrc
#通过以下命令验证配置是否正确:
ldd /usr/local/HammerDB-3.1/lib/mysqltcl3.052/libmysqltcl3.052.so
#进入HammerDB安装目录检验mysql环境变量的设置是否生效
[root@lavm-1nqyvimnov ~]# cd /opt/HammerDB-4.11/
[root@lavm-1nqyvimnov HammerDB-4.11]# ll
总用量 6100
drwxrwxr-x 2 root root 4096 7月 19 19:43 agent
drwxrwxr-x 2 root root 4096 7月 19 19:43 bin
-rw-rw-r-- 1 root root 39452 6月 18 15:25 ChangeLog
-rw-rw-r-- 1 root root 5202 6月 18 15:25 CODE_OF_CONDUCT.md
drwxrwxr-x 3 root root 4096 7月 19 19:43 config
-rw-rw-r-- 1 root root 9931 6月 18 15:25 CONTRIBUTING.md
-rwxr-xr-x 1 root root 8908 6月 18 15:25 hammerdb
-rwxr-xr-x 1 root root 11397 6月 18 15:25 hammerdbcli
-rwxr-xr-x 1 root root 3114 6月 18 15:25 hammerdbws
drwxrwxr-x 2 root root 4096 7月 19 19:43 images
drwxrwxr-x 2 root root 4096 7月 19 19:43 include
drwxrwxr-x 28 root root 4096 7月 19 19:43 lib
-rw-rw-r-- 1 root root 35149 6月 18 15:25 LICENSE
drwxrwxr-x 2 root root 4096 7月 19 19:43 modules
-rw-rw-r-- 1 root root 518 6月 18 15:25 README.md
drwxrwxr-x 4 root root 4096 7月 19 19:43 scripts
drwxrwxr-x 10 root root 4096 7月 19 19:43 src
-rwx------ 1 root root 6065597 7月 19 19:43 uninstall
-rw------- 1 root root 10583 7月 19 19:43 uninstall.dat
[root@lavm-1nqyvimnov HammerDB-4.11]# ./hammerdbcli
HammerDB CLI v4.11
Copyright (C) 2003-2024 Steve Shaw
Type "help" for a list of commands
Initialized Jobs on-disk database /tmp/hammer.DB using existing tables (434,176 bytes)
hammerdb>librarycheck
Checking database library for Oracle
Error: failed to load Oratcl - can't read "env(ORACLE_HOME)": no such variable
Ensure that Oracle client libraries are installed and the location in the LD_LIBRARY_PATH environment variable
Checking database library for MSSQLServer
Error: failed to load tdbc::odbc - couldn't load file "libiodbc.so": libiodbc.so: cannot open shared object file: No such file or directory
Ensure that MSSQLServer client libraries are installed and the location in the LD_LIBRARY_PATH environment variable
Checking database library for Db2
Error: failed to load db2tcl - couldn't load file "/opt/HammerDB-4.11/lib/db2tcl2.0.1/libdb2tcl.so": libdb2.so.1: cannot open shared object file: No such file or directory
Ensure that Db2 client libraries are installed and the location in the LD_LIBRARY_PATH environment variable
Checking database library for MySQL
Success ... loaded library mysqltcl for MySQL
Checking database library for PostgreSQL
Error: failed to load Pgtcl - couldn't load file "/opt/HammerDB-4.11/lib/pgtcl2.1.1/libpgtcl2.1.1.so": libpq.so.5: cannot open shared object file: No such file or directory
Ensure that PostgreSQL client libraries are installed and the location in the LD_LIBRARY_PATH environment variable
Checking database library for MariaDB
Error: failed to load mariatcl - couldn't load file "/opt/HammerDB-4.11/lib/mariatcl0.1/libmariatcl0.1.so": libmariadb.so.3: cannot open shared object file: No such file or directory
Ensure that MariaDB client libraries are installed and the location in the LD_LIBRARY_PATH environment variable
启动后的HammerDB可视化界面
测试结果:
下图是模拟100用户时:
下图是模拟90用户时:
其他省略。。。
最终结果一个表格总结下:
用户数 | TMP |
---|---|
10 | 11602 |
20 | 11127 |
30 | 11798 |
40 | 11454 |
50 | 12252 |
60 | 12324 |
70 | 12186 |
80 | 12600 |
90 | 12072 |
100 | 12390 |
在使用HammerDB进行数据库性能测试时,tpm(transactions per minute,每分钟事务数)是一个关键的性能指标。tpm值越大,表示在单位时间内数据库能够处理更多的事务,这通常意味着以下几点:
- 更高的性能:数据库能够在每分钟内完成更多的事务处理,显示出更高的处理能力。
- 更好的响应能力:高tpm值通常意味着数据库响应用户请求的速度更快。
- 更强的并发处理能力:数据库能够同时处理更多用户或应用程序的请求,表明其并发处理能力较强。
- 系统优化:较高的tpm值可能反映了数据库和服务器配置得当,包括硬件资源(如CPU、内存、存储)的有效利用和数据库管理系统的优化设置。
- 业务能力:对于业务来说,高tpm值意味着系统能够支持更大的用户基数和更高的业务量,有助于业务扩展和用户体验的提升。 总之,tpm是衡量数据库综合性能的一个重要指标,高tpm值通常表示数据库系统具有良好的性能和稳定的处理能力。在进行性能测试和系统评估时,tpm是一个非常有用的参考数据。
并发测试
安装Apache Bench
dnf install httpd-tools
# 测试安装是否成功:
[root@lavm-1nqyvimnov ~]# ab -V
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
使用说明:
对百度进行下测试:
- Document Path:测试页面
- Document Length: 页面大小
- Concurrency Level: 测试的并发数
- Time taken for tests:整个测试持续的时间
- Complete requests:完成的请求数量
- Failed requests: 失败的请求数量
- Write errors: 0
- Total transferred: 整个过程中的网络传输量
- HTML transferred: 整个过程中的HTML内容传输量
- Requests per second: 最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
- Time per request: 最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
- Time per request: 每个连接请求实际运行时间的平均值
- Transfer rate: 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
安装Nginx
第一步:更新系统中所有的软件包
# 更新软件包
sudo dnf upgrade --refresh -y
第二步:删除以前的 Nginx
若没有安装过 nginx,这一步可以省略。
1)备份 nginx 配置文件
# 备份配置文件
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
2)停止 nignx
# 停止 nginx
sudo systemctl stop nginx
3)删除 nginx
# 该步骤需要操作
sudo dnf autoremove nginx*
第三步:导入 nginx 库
1)方式一:从官方网站导入
sudo tee /etc/yum.repos.d/nginx-mainline.repo<<EOF
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
2)方式二:从 Rocky Linux EL9 中导入
sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
从这两种方式中选择一种即可。
第四步:安装 nginx
1)安装 dnf-utils
sudo dnf -y install dnf-utils
2)配置主线版本(可以省略)
# 该版本是最新版本(非稳定),可以不执行该命令
sudo yum-config-manager --enable nginx-mainline
3)安装最新稳定版本 nginx
#
sudo dnf -y install nginx
4)删除主线版本(可以省略)
# 可省略,安装了 3),可以使用它进行删除
sudo yum-config-manager --disable nginx-mainline
主要看 1)
和 3)
步即可。
第五步:配置防火墙
# 允许 HTTP
sudo firewall-cmd --permanent --zone=public --add-service=http
# 允许 HTTPS
sudo firewall-cmd --permanent --zone=public --add-service=https
# 重载防火墙
sudo firewall-cmd --reload
如此,nginx 已经安装完成
第六步:nginx 相关操作
# 启动 nginx
systemctl start nginx.service
# 停止 nginx
systemctl stop nginx.service
# 平滑启动
systemctl reload nginx.service
第七步:访问 nginx
出现如下信息。
找到nginx.conf
在server 块中添加一个新的 location 块。
解释:
-
location /static/: 这定义了一个新的位置块,用于匹配 URL 中以 /static/ 开头的请求。
-
alias /usr/share/nginx/static/: alias 指令用于将 URL 映射到文件系统中的指定目录。这里将 /static/ 映射到 /usr/share/nginx/static/ 目录。
-
autoindex off: 这个指令用于关闭自动生成的目录列表,这样访问目录时不会显示目录下的所有文件列表,而是直接访问指定的文件。
现在,你可以通过 URL http://your-server-ip/static/image.jpg (将 image.jpg 替换为实际的图片文件名)来访问 /usr/share/nginx/static 目录下的图片文件。确保你的图片文件已经放在 /usr/share/nginx/static 目录下,并且文件名正确。
检测下Nginx配置文件是否正确
nginx -t
重新加载 Nginx 配置
nginx -s reload
508KB静态页面测试 并发20,平均响应时间10.5秒
- -n 后面的100,表示总共发出100 个请求;
- -c 后面的20 ,表示采用20 个并发(模拟 20 个人同时访问),
- 后面的网址表示测试的目标URL。
性能指标解释
1. Concurrency Level: 20并发级别为20,意味着有20个并发请求同时向服务器请求数据。2. Time taken for tests: 52.528 seconds完成所有请求共花费了52.528秒。3. Complete requests: 100成功完成了100次请求,没有失败的请求。4. Requests per second: 1.90 [#/sec] (mean)平均每秒处理了1.90个请求。这个数值较低,可能是由于文件较大或服务器处理能力有限。5. Time per request: 10505.693 [ms] (mean)每个请求的平均处理时间为10505.693毫秒(或10.5秒),这是单个请求从发起到接收完毕的时间。6. Time per request: 525.285 [ms] (mean, across all concurrent requests)考虑到并发请求,每个请求的平均处理时间为525.285毫秒。这表示服务器在处理并发请求时的效率。7. Transfer rate: 967.96 [Kbytes/sec] received平均传输速率为967.96 KB/秒。这个速率考虑到文件大小和请求数量,显示了网络和服务器的数据处理能力。
连接时间分析
- Connect: min 0 ms, mean 70 ms, max 1013 ms
建立连接的时间从0毫秒到1013毫秒不等,平均为70毫秒。最大值较高可能是网络延迟或瞬间负载较高的表现。
- Processing: min 1420 ms, mean 9989 ms, max 25913 ms
处理时间最短为1420毫秒,平均为9989毫秒,最长为25913毫秒。处理时间的波动较大,表明服务器在处理请求时的性能可能不稳定。
- Waiting: min 0 ms, mean 86 ms, max 818 ms
等待时间相对较短,这通常指的是服务器处理完请求后,客户端接收响应数据的等待时间。
请求时间分布
-
50% 的请求在 10382 毫秒内完成
-
90% 的请求在 16351 毫秒内完成
-
最长的请求时间为 25913 毫秒
结论
这次测试显示,尽管所有请求都成功完成,但请求响应时间较长,特别是在高并发情况下。如果需要提高性能,可能需要考虑以下几点:
-
服务器优化:检查服务器配置和资源使用情况,优化Nginx配置,如调整缓存设置、增加工作进程等。
-
网络状况:检查网络连接和带宽,确保网络环境稳定。
-
内容分发:考虑使用内容分发网络(CDN)来减少加载时间,特别是对于大文件的服务。
-
硬件升级:如果服务器硬件资源不足,可能需要升级硬件以提高处理能力。
最后总结
服务器性能
-
CPU 运算跑分:单核得分1096.6,多核得分2959.8,表现还行。
-
磁盘IO:平均IO为112.7MB/s,偏低。
-
内存:内存最大分配到16GB,表现不错。
-
数据库压测:tpm值最高达到12600,但整体表现一般。
-
并发压测:在20个并发请求下,平均每秒处理1.90个请求,表现一般。
网络情况
-
下行速度:国内下行最高40Mbps,使用speedtest-cli测试结果为9.11Mbit/s。
-
上行速度:上行应该是5Mbps,但能跑到7Mbps,使用speedtest-cli测试结果为6.48Mbit/s。