普通视图

发现新文章,点击刷新页面。
昨天以前首页

OpenResty 的性能优化配置建议

2025年3月25日 00:00

1Panel 的用户越来越多,内置 Web 服务 OpenResty 使用占比也在增加,但网上对其优化的教程很少。应关关童靴的需求,更新一篇有关 OpenResty 的一些优化建议。可优化设置项较少,需要的小伙伴可以根据实际需求变更配置。

server_names_hash_bucket_size 参数项

含义:该参数用于设置服务器名字 hash 表大小,若名字过长或服务较多,保持默认值可能使 hash 表空间不足,引发错误。

优化建议:一般为 server_names_hash_max_size 的 1/2-1/3 左右,如服务器配置较高,可直接设置 256

gzip 参数项

gzip_min_length 参数项:对小文件压缩可能得不偿失,一般设置为 1k10k 左右,小于该值的文件不压缩。

gzip_comp_level 参数项:压缩级别,1 为最小最快,9 为最大最慢,通常建议设置为 4-6,以平衡压缩效果和 CPU 使用率。

client_header_buffer_size 参数项

含义:用于设置读取客户端请求头的缓冲区大小,若请求头过大,可能超出默认值导致客户端报错。

优化建议:根据实际业务需求调整,如业务请求头通常较大,可设为 32k 左右,确保可以完整读取大部分请求头。

client_max_body_size 参数项

含义:限制客户端请求主体的最大允许大小,超出该值请求将被拒绝。

优化建议:根据业务场景和服务器承受能力设置,如普通表单提交可设置为 10m-20m 左右,对于文件上传等大请求可以适当增大。

keepalive_timeout 参数项

含义:设置长连接的超时时间,即客户端与服务器间连接保持空闲的最大时间。

优化建议:一般设为 60-90 秒左右,时间过短会频繁断开连接且增加开销,过长则可能占用过多的资源。

优化后的配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
http {
# gzip相关配置
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/json;
gzip_vary on;
gzip_proxied any;
gzip_disable "msie6";

# 服务器名字hash表大小
server_names_hash_bucket_size 128;

# 客户端请求头缓冲区大小
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;

# 客户端请求主体最大允许大小
client_max_body_size 32m;

# 长连接超时时间
keepalive_timeout 60;

# 其他配置...
}

注意:以上配置仅供参考,具体优化需根据实际业务场景和硬件配置进行调优。

Nginx 从配置到缓存的性能优化

2025年3月22日 00:00

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛应用于处理高并发请求。然而,默认配置并不一定适合所有场景,尤其是在高流量或复杂业务逻辑的情况下。本文将介绍一些 Nginx 的基础配置优化和缓存的使用方法以提升 Nginx 的性能。

基础配置优化

  1. 调整 worker_processes 以及 worker_connections

Nginx 使用多进程模型处理请求。worker_processes 定义 Nginx 使用的工作进程数,而 worker_connections 定义每个工作进程可以处理的最大连接数:

1
2
3
4
worker_processes auto;
events {
worker_connections 1024;
}

参数作用如下:

参数作用
worker_processes设置为 auto 可以让 Nginx 自动根据 CPU 核心数来分配工作进程数。如服务器有 4 个 CPU 核心,Nginx 会启动 4 个工作进程。
worker_connections这个值决定了每个工作进程可以处理的最大连接数。通常,可根据服务器的内存和网络带宽来调整这个值。1024 是一个常见起点,可以调整到 2048。
  1. 启用 keepalive 长连接

HTTP 协议中的 keepalive 机制允许客户端和服务器在同一个连接上发送多个请求,减少了 TCP 连接的建立和关闭开销:

1
2
3
4
http {
keepalive_timeout 65;
keepalive_requests 100;
}

参数作用如下:

参数作用
keepalive_timeout定义客户端与服务器保持连接的时间。设置为 65 秒意味着如果客户端在 65 秒内没有发送新请求,连接将被关闭。
keepalive_requests定义了单个连接上允许的最大请求数。设置为 100 意味着一个连接可以处理 100 个请求后关闭。
  1. 调整 buffer 的大小

Nginx 使用缓冲区来存储请求和响应数据。如缓冲区设置过小,Nginx 可能会频繁地进行磁盘 I/O 操作,影响性能:

1
2
3
4
5
http {
client_body_buffer_size 10K;
client_header_buffer_size 1k;
large_client_header_buffers 48k;
}

参数作用如下:

参数作用
client_body_buffer_size定义用于存储客户端请求体的缓冲区大小。如请求体超过这个大小,会将数据写入磁盘。
client_header_buffer_size定义用于存储客户端请求头的缓冲区大小。
large_client_header_buffers定义用于存储大型请求头的缓冲区数量和大小。

缓存提升性能

  1. 启动静态资源缓存

对于静态资源,启用缓存可以显著减少服务器的负载:

1
2
3
4
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}

参数作用如下:

参数作用
expires定义了资源的缓存时间。30d 表示资源将缓存 30 天。
Cache-Controlpublic 表示资源可以被任何缓存「如浏览器、CDN等」缓存,no-transform 表示不允许代理服务器对资源进行转换「如压缩等」
  1. 使用代理缓存

如使用 Nginx 作为反向代理,可启用代理缓存来缓存后端服务器的响应:

1
2
3
4
5
6
7
8
9
10
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}

参数作用如下:

参数作用
proxy_cache_path定义了缓存存储的路径、缓存键的存储区域、缓存的最大大小及缓存的有效期。
proxy_cache启用缓存并使用指定的缓存区域。
proxy_cache_valid定义不同状态码的缓存时间。
  1. 使用 gzip 压缩减少网络传输量

gzip 压缩可以显著减少传输数据量,从而加快页面加载速度:

1
2
3
4
5
6
7
8
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 6;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
}

参数作用如下:

参数作用
gzip启用压缩。
gzip_types定义了需要压缩的文件类型。通常包括文本文件、CSS/JavaScript/XML 等。
gzip_comp_level定义压缩级别,范围是 1 到 9。1 是最低的压缩率,9 是最高的压缩率。默认值 6
gzip_min_length定义最小压缩文件大小。小于这个大小的文件不会被压缩。
gzip_proxied定义了是否对代理请求启用压缩。any 表示对所有代理请求启用压缩。
gzip_vary添加响应,确保代理服务器能正确处理缓存。

HTTP/2 与速率限制

  1. 使用 HTTP/2 版协议

HTTP/2 提供了多路复用、头部压缩特性,可以显著提升性能:

1
2
3
4
5
server {
listen 443 ssl http2;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}

参数作用如下:

参数作用
http2listen 指令中添加 http2 参数即可启用。
  1. 限制请求速率

为了防止恶意请求或突发流量导致服务器过载,可使用 limit_req 模块限制请求速率:

1
2
3
4
5
6
7
8
9
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
location / {
limit_req zone=one burst=5;
}
}
}

参数作用如下:

参数作用
limit_req_zone定义限流区域。$binary_remote_addr 表示根据客户端的 IP 地址进行限流,rate=1r/s 表每秒允许 1 个请求。
limit_req在指定的位置应用限流。burst=5 表允许突发 5 个请求。

LB 和日志优化

  1. 负载均衡
1
2
3
4
5
6
7
8
9
10
upstream backend {
server 192.168.1.1:8080;
server 192.168.1.2:8080;
}

server {
location / {
proxy_pass http://backend;
}
}

注意:通过 upstream 模块可以将请求分发到多个后端服务器,提高并发处理能力。

  1. 日志优化
1
2
access_log /var/log/nginx/access.log main buffer=16k;
error_log /var/log/nginx/error.log warn;

注意:调整日志级别可减少日志输出量,提升性能。这表示将访问日志的缓冲区大小设置为 16KB,并将错误日志级别设置为 warn

当电脑/Windows变慢时, 也许是该更新系统了

2025年3月8日 21:46

我每天使用 Microsoft Surface Studio 作为我的主要工作站,并且很少关闭或重启电脑,除非 Windows 强制更新。

最近,整个操作系统变得异常缓慢,Chrome 浏览器在加载包含大型表格的页面时甚至会导致系统冻结。一开始,我尝试关闭不必要的应用程序并清理一些内存,但问题依然存在。即使是简单的操作,比如在窗口之间切换或打开“开始”菜单,都变得迟缓无比。最终,我决定重启电脑,而一旦重启,Windows 立即开始安装更新。

更新完成后,系统恢复了正常,Chrome 不再卡顿,整体性能也大幅改善。这让我意识到,长时间不开机更新可能会导致系统性能逐渐下降。虽然 Windows 具备管理内存和资源的机制,但某些更新(尤其是涉及安全性、驱动程序或性能优化的更新)可能需要重启后才能生效。

所以,如果你的操作系统开始变得缓慢或无响应,这可能是在提醒你该安装更新了。定期更新系统不仅能提升性能,还能增强安全性和稳定性。今后,我可能会改变自己不愿重启的习惯,把定期更新作为维护电脑的一部分。

浏览器很吃内存

别一个系统很卡的原因就是浏览器不释放内存,因为长时间不重启/关电脑,也不关浏览器,经常我的Chrome和Edge的浏览器都是很多标签页,虽然关了程序,但是浏览器还是会在内存中不能正确得到释放,我一般就是强制删掉Chrome/Edge浏览器进程

taskkill /im:chrome.exe /f
taskkill /im:msedge.exe /f

## 或者直接一行终止 Edge/Chrome浏览器
taskkill /im:msedge.exe /im:chrome.exe /f

一条TaskKill命令下去(Windows操作系统)批量把所有停留在内存中的Chrome和Edge浏览器进程都终止掉,有快感,很爽。

task-kill-chrome-and-msedge 当电脑/Windows变慢时, 也许是该更新系统了 I.T. Windows 操作系统 小技巧

Task Kill 命令批量终止Chrome和MS Edge浏览器的所有进程。

windows-slow-install-updates-please-keep-your-computer-on 当电脑/Windows变慢时, 也许是该更新系统了 I.T. Windows 操作系统 小技巧

Windows每段时间都要强迫我更新。

Windows操作系统

英文:When Your PC Slows Down, It Might Be Time for an Update

本文一共 622 个汉字, 你数一下对不对.
当电脑/Windows变慢时, 也许是该更新系统了. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 当电脑/Windows变慢时, 也许是该更新系统了 I.T. Windows 操作系统 小技巧
The post 当电脑/Windows变慢时, 也许是该更新系统了 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 围棋的走法和宇宙原子总量谁更多? 围棋的棋盘是19乘于19条线, 棋手在线交叉的位置上放棋子. 每个地方可以有三种状态: 白的, 红的, 或者为空. 所以不考虑棋子有效性, 围棋所有棋盘的数目是 3的361次方. 科学家们估计了宇宙中原子的数目大约在 10的78次方到10的82次方间 我们就姑且认为是 10的80次方吧. 问题来, 哪一个更多呢?...
  4. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  5. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
  8. 国内现在的外卖真是又快又便宜 这次回国感触最深的就是国内的外卖。第一天去颐和园回到我姐家5-6点很累,不想出门,所以就在家点了外卖。手机微信小程序(美团)选了支付下单,半小时内就送到了。 一开门,就见外卖小哥的一只手把食物送了过来,人的正脸都没见到,外卖小哥转身就走,走太快在拐角处还差点滑倒了。 我姐说,现在平台算法优化很厉害,送晚了,平台会罚钱,所以外卖小哥争分夺秒一刻也不敢多逗留。 撇开外卖食物是否干净健康,中国现在的外卖真是又快又便宜,比如那天和我姐一起去北京的环球影城,在回家的路上(坐地铁7号钱坐一个小时到菜市口站),我姐快到家的时候点了两碗粥,到家一会儿就送到了,你猜多钱?也才19元。19元也就2英镑多一些,在英国都不够小费的。 在国内真是幸福,怪不得国内房子的厨房大多不大,我姐二环2居室,厨房真是一点点,只够一人进去的,两人在厨房就很挤了。我估计是国内(打工)人吃饭大多外卖/餐馆,一年下厨房的次数估计一个手就能数过来。 望京小腰-这店名取得真不错。 本文一共 398 个汉字, 你数一下对不对. 国内现在的外卖真是又快又便宜. (AMP 移动加速版本) 赞赏我的几个理由. ¥...

VPS, 专用服务器和云托管专用服务器: 主要区别和建议

2025年1月27日 06:30

理解VPS、专用服务器和云管理专用服务器

选择合适的托管解决方案可能会让人感到困惑,尤其是在当今可用选项繁多的情况下。其中,虚拟专用服务器(VPS)、专用服务器和云管理专用解决方案各自具有独特的优势。在本文中,我们将深入探讨它们之间的区别,并提供建议,帮助您做出明智的决定。

什么是VPS?

虚拟专用服务器(VPS = Virtual Private Server)是在物理服务器上创建的虚拟化环境。使用VPS托管时,您与其他用户共享物理服务器的资源(CPU、内存、存储)。然而,虚拟化技术确保您获得这些资源的专用部分,相比共享主机,提供了更多的控制、灵活性和性能。

VPS托管非常适合需要可扩展性的中小型项目,而不需要支付专用服务器的高成本。

什么是专用服务器?

专用服务器(Dedicated Server)为您提供一整台物理机器,专供您使用。此设置提供无与伦比的性能、定制性和控制力。没有资源共享,您可以根据特定的工作负载优化服务器,使其适用于高流量网站、大型数据库或有高要求的应用程序。

尽管专用服务器提供顶级性能,但它们的价格较高,并且需要高级的技术知识来进行管理。

什么是云管理专用服务器?

云管理专用服务器(Cloud-Managed Dedicated Servers)将专用硬件的优势与云基础设施的灵活性和便捷性结合起来。例如,许多供应商提供裸金属云解决方案,提供专用的CPU和内存,同时融入云的特性,如快速部署、可扩展性和按需计费。

这些解决方案提供专用服务器的原始计算能力,但消除了传统服务器管理的复杂性。它们非常适合那些希望在性能、可扩展性和易用性之间找到平衡的企业。

关键区别

以下是这些托管解决方案之间的主要区别:

  • VPS:共享物理资源,价格实惠,可扩展,适合中等负载的项目。
  • 专用服务器:专用物理资源,价格昂贵,高度可定制,适合资源密集型任务。
  • 云管理专用服务器:专用物理资源,具有云特性如可扩展性和简化的管理。

建议:什么时候选择哪种?

  • VPS托管:最适合创业公司、小型企业或正在发展中的开发者,他们需要一个性价比高且可扩展的解决方案。
  • 专用服务器:最适合企业、大型网站或需要不妥协性能和完全服务器控制的应用程序。
  • 云管理专用服务器:推荐给那些需要专用服务器的计算能力,但又希望拥有云平台的灵活性和管理简易性的企业。

对比表:VPS vs 专用服务器 vs 云管理专用服务器

特性 VPS 专用服务器 云管理专用服务器
资源分配 共享物理服务器和虚拟化资源 完全专用的物理服务器 完全专用的物理服务器
性能 中等
可扩展性 良好 有限(需要硬件升级) 优秀
成本 实惠 昂贵 中等到昂贵
管理 需要一定的技术知识 需要高级专业知识 由提供商管理,更简便
最适合 中小型项目 高流量网站、大型应用 需要在性能和灵活性之间找到平衡的企业

结论

在选择VPS、专用服务器和云管理专用解决方案时,理解您的项目需求至关重要。如果您刚刚起步,VPS托管是一个不错的选择。对于高性能需求,可以选择专用服务器。若您需要在性能、灵活性和管理简便性之间找到平衡,云管理专用服务器值得考虑。

您可以使用VPS数据库工具比较一些VPS供应商。

英文:VPS vs Dedicated Servers vs Cloud-Managed Dedicated Servers: Key Differences and Recommendations

服务器

本文一共 1103 个汉字, 你数一下对不对.
VPS, 专用服务器和云托管专用服务器: 主要区别和建议. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c VPS, 专用服务器和云托管专用服务器: 主要区别和建议 云计算 服务器 资讯 运维
The post VPS, 专用服务器和云托管专用服务器: 主要区别和建议 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 推荐英国三文鱼的烹饪方法 Tesco超市里都有卖三文鱼, 我最喜欢的是这种没有被烟熏过的. 产地挪威, 生的. 昨天圣诞节特价, 原价 24 镑, 半价只要 12 镑. 果断买了一盒. 其实我最喜欢生吃, 沾着介末吃, 老婆也很喜欢,...
  4. 共享主机(Shared Hosting)和VPS主机的比较 共享主机 vs VPS 主机:关键区别 当我开始我的互联网之旅时,我将我的个人网站放在资源有限的共享主机上,后来我学会了管理服务器(Linux),并将我的网站迁移到 VPS 服务器。我开始开发 Web 应用程序和 API,甚至有一些应用程序在专用服务器(Dedicated Server)上运行。 简介 选择合适的主机托管方案对于网站的性能、可扩展性和安全性至关重要。目前流行的两种选择是共享主机(Shared Hosting)和虚拟专用服务器(VPS Hosting)。虽然它们都相对经济实惠,但在资源分配、性能和管理控制方面存在显著差异。本文将深入探讨这些区别,帮助您做出明智的决策。...
  5. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  6. 时代不同, 我儿子10岁就能通过github pages做一个静态网站 今天,我二娃搞了一个网页/网站,他通过 GitHub Pages 完成的,其实不难。几天前,他注册了一个 GitHub 账户(被戏称为全世界最大的“同志网站”——gayhub),取了个 ID,叫做 faceless15748。他说 faceless15 已经被人注册了。 他还自学了 HTML 和 Markdown,并且稍微懂一些 JavaScript...
  7. 怎么样改变屏幕的显示方向? 只要我在家里办公,我儿子们总能趁我起身(泡茶)一小会儿的功夫去按我的键盘.这不,一会儿不知道怎么回事, 我的屏幕就成这样子了. 后来查了, 发现儿子(更有可能是两个儿子各按到一些键)是碰巧按到 CTRL + ALT + 方向下 键.这得是多小的概率啊. 同理,屏幕方向朝上需要按快捷键 Ctrl + Alt +...
  8. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...

探索浏览器性能利器 Speedometer 3.0

2025年1月19日 00:00

在当今数字化时代,浏览器已成为我们日常生活中不可或缺的工具。如何衡量浏览器性能呢?Speedometer 3.0 正为此而生。它是一款专注于测试浏览器响应速度和性能的基准测试工具,通过模拟真实用户操作,帮助我们深入了解浏览器在处理复杂任务时的表现。

Speedometer 3.0 浏览器性能的试金石

Speedometer 3.0 是由 BrowserBench.org 开发的一款浏览器基准测试工具,旨在通过模拟真实 Web 应用场景来评估浏览器的响应能力。它通过一系列的演示 Web 应用程序,模拟用户常见操作行为,例如添加待办事项、编辑文档、浏览网页等等,从而量化浏览器在处理这些任务时的效率:

测试原理、方法

Speedometer 3.0 的测试原理是基于对 Web 应用的响应时间测量。它通过运行一系列预设的 Web 应用场景,记录浏览器在处理这些任务时的响应时间。这些场景涵盖从简单的页面加载到复杂的交互操作,例如在待办事项列表中添加任务、在文本编辑器输入文字、在表格中添加数据等等。通过这些多样化的测试场景,Speedometer 3.0 能够全面评估浏览器在不同负载的性能表现。

在测试过程中,Speedometer 3.0 会自动调整测试任务复杂程度,以确保测试结果准确性和可靠性。它还会根据浏览器性能表现动态调整测试参数,从而避免因浏览器性能差异而导致的测试偏差。这种自适应的测试方法使得 Speedometer 3.0 能够在不同类型的浏览器上获得一致的测试结果,为用户提供公平的比较基准。

如何进行测试

进行测试非常简单。用户只需访问官方网站,然后按照页面上的提示操作即可。在开始测试前,Speedometer 3.0 会自动检查浏览器窗口的大小,并提示用户调整窗口大小以确保测试结果的准确性。测试过程通常需几分钟时间,具体取决于浏览器的性能和测试设备硬件配置。在测试完成后,Speedometer 3.0 会生成一份详细测试报告,用户可将这份报告保存或分享给他人。此外,Speedometer 3.0 还支持跨设备和跨浏览器比较功能,用户可轻松地对比不同浏览器或不同设备上的测试结果,从而找到适合自己的浏览器:

测试结果解读

Speedometer 3.0 的测试结果以分数的形式呈现,分数越高表示浏览器的响应速度越快,性能越好。测试结果不仅包括总分,还会详细列出各个测试场景得分情况。这使得用户可深入了解浏览器在不同任务类型下的表现,如在处理文本编辑任务时是否更高效,或者在加载复杂网页时是否更快。此外,Speedometer 3.0 还提供了一些额外的性能指标,如帧率和延迟时间。帧率反映浏览器在处理动画和交互操作时的流畅度,而延迟时间则表示浏览器在接收到用户操作指令后响应速度。通过这些详细性能指标,用户可以更全面地了解浏览器的性能特点,从而做出更明智的选择:

MySQL参数一键配置脚本: 有效提升数据库性能

2024年12月23日 03:15

我一直是自己租用VPS服务器,然后搭建各种服务,比如博客就是Apache2+MySQL数据库。一般来说就是默认参数,没有去管,不过最近发现MySQL的性能参数都很保守,不能发挥整个服务器的性能。

然后我就网上搜索了一下,根据参数配置建议,用ChatGPT写了以下Python和BASH脚本。只需要在需要优化的服务器上,跑一下该脚本,然后就会显示参数配置,然后直接把参数添加到MySQL数据库配置参数文件上: /etc/mysql/mysql.conf.d/mysqld.cnf

然后运行: service mysql restart 重启MySQL服务器。

运行了几周,发现效果很好,博客反应速度也快了很多,这很大原因是根据了内存增加了MySQL缓存大小。

Python脚本优化MySQL数据库参数

把下面的Python脚本存成 mysql_config.py 然后运行 python3 mysql_config.py

def get_total_ram():
    with open('/proc/meminfo', 'r') as f:
        for line in f:
            if line.startswith("MemTotal:"):
                total_ram_kb = int(line.split()[1])
                return total_ram_kb * 1024  # 转换为字节(bytes)
    return 0  # 如果未找到 MemTotal,则返回 0

def calculate_mysql_settings():
    # 获取总内存(以字节为单位)
    total_ram = get_total_ram()

    # 根据总内存(以字节为单位)计算 MySQL 配置
    innodb_buffer_pool_size = int(total_ram * 0.3)  # 使用内存的 30%
    key_buffer_size = min(total_ram * 20 // 100, 512 * 1024 * 1024)  # 使用内存的 20%,最大限制为 512MB
    sort_buffer_size = min(total_ram * 25 // 1000, 4 * 1024 * 1024)  # 使用内存的 0.25%,最大限制为 4MB
    read_rnd_buffer_size = min(total_ram * 625 // 100000, 512 * 1024)  # 使用内存的 0.0625%,最大限制为 512KB
    tmp_table_size = max_heap_table_size = min(total_ram * 5 // 100, 64 * 1024 * 1024)  # 使用内存的 5%,最大限制为 64MB
    join_buffer_size = min(total_ram * 2 // 1000, 4 * 1024 * 1024)  # 使用内存的 0.2%,最大限制为 4MB
    table_open_cache = min(400 + (total_ram // 64), 2000)  # 根据内存动态计算,最大限制为 2000
    thread_cache_size = min(total_ram * 15 // 1000, 100)  # 使用内存的 1.5%,最大限制为 100
    innodb_log_buffer_size = min(total_ram * 5 // 100, 16 * 1024 * 1024)  # 使用内存的 5%,最大限制为 16MB

    # 以字节为单位打印配置
    print(f"MySQL 配置(基于总内存 {total_ram / (1024 * 1024):.2f} MB):")
    print("将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾\n")
    
    print(f"innodb_buffer_pool_size = {innodb_buffer_pool_size}")
    print(f"key_buffer_size = {key_buffer_size}")
    print(f"sort_buffer_size = {sort_buffer_size}")
    print(f"read_rnd_buffer_size = {read_rnd_buffer_size}")
    print(f"tmp_table_size = {tmp_table_size}")
    print(f"max_heap_table_size = {max_heap_table_size}")
    print(f"join_buffer_size = {join_buffer_size}")
    print(f"table_open_cache = {table_open_cache}")
    print(f"thread_cache_size = {thread_cache_size}")
    print(f"innodb_log_buffer_size = {innodb_log_buffer_size}")

    # 打印自定义设置
    print("expire_logs_days = 3")
    print("max_binlog_size = 100M")

if __name__ == "__main__":
    calculate_mysql_settings()

会打印出类似以下的配置:

innodb_buffer_pool_size = 626468044
key_buffer_size = 417645363
sort_buffer_size = 4194304
read_rnd_buffer_size = 524288
tmp_table_size = 67108864
max_heap_table_size = 67108864
join_buffer_size = 4176453
table_open_cache = 2000
thread_cache_size = 100
innodb_log_buffer_size = 16777216
expire_logs_days = 3
max_binlog_size = 100M

添加到MySQL的配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf 然后重启数据库即可:service mysql restart

BASH脚本优化MySQL数据库参数

以下是完成同样功能的BASH脚本。

#!/bin/bash

# 获取总内存大小(以字节为单位)
get_total_ram() {
    # 从 /proc/meminfo 中提取总内存(以 kB 为单位)
    total_ram_kb=$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)
    if [[ -z "$total_ram_kb" ]]; then
        echo 0  # 如果未找到 MemTotal,则返回 0
    else
        echo $((total_ram_kb * 1024))  # 将 kB 转换为字节
    fi
}

# 根据总内存大小计算 MySQL 配置
calculate_mysql_settings() {
    # 获取总内存(以字节为单位)
    total_ram=$(get_total_ram)

    # 计算 MySQL 配置参数
    innodb_buffer_pool_size=$((total_ram * 30 / 100))  # 使用内存的 30%
    key_buffer_size=$(($((total_ram * 20 / 100)) < $((512 * 1024 * 1024)) ? $((total_ram * 20 / 100)) : $((512 * 1024 * 1024))))  # 使用内存的 20%,最大限制为 512MB
    sort_buffer_size=$(($((total_ram * 25 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 25 / 1000)) : $((4 * 1024 * 1024))))  # 使用内存的 0.25%,最大限制为 4MB
    read_rnd_buffer_size=$(($((total_ram * 625 / 100000)) < $((512 * 1024)) ? $((total_ram * 625 / 100000)) : $((512 * 1024))))  # 使用内存的 0.0625%,最大限制为 512KB
    tmp_table_size=$((total_ram * 5 / 100 < 64 * 1024 * 1024 ? total_ram * 5 / 100 : 64 * 1024 * 1024))  # 使用内存的 5%,最大限制为 64MB
    max_heap_table_size=$tmp_table_size  # 临时表大小等于最大堆表大小
    join_buffer_size=$(($((total_ram * 2 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 2 / 1000)) : $((4 * 1024 * 1024))))  # 使用内存的 0.2%,最大限制为 4MB
    table_open_cache=$(($((400 + total_ram / 64)) < 2000 ? $((400 + total_ram / 64)) : 2000))  # 根据内存动态计算,最大限制为 2000
    thread_cache_size=$(($((total_ram * 15 / 1000)) < 100 ? $((total_ram * 15 / 1000)) : 100))  # 使用内存的 1.5%,最大限制为 100
    innodb_log_buffer_size=$(($((total_ram * 5 / 100)) < $((16 * 1024 * 1024)) ? $((total_ram * 5 / 100)) : $((16 * 1024 * 1024))))  # 使用内存的 5%,最大限制为 16MB

    # 打印配置(以字节为单位)
    echo "MySQL 配置(基于总内存 $((total_ram / (1024 * 1024))) MB):"
    echo "将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾"
    echo
    echo "innodb_buffer_pool_size = $innodb_buffer_pool_size"
    echo "key_buffer_size = $key_buffer_size"
    echo "sort_buffer_size = $sort_buffer_size"
    echo "read_rnd_buffer_size = $read_rnd_buffer_size"
    echo "tmp_table_size = $tmp_table_size"
    echo "max_heap_table_size = $max_heap_table_size"
    echo "join_buffer_size = $join_buffer_size"
    echo "table_open_cache = $table_open_cache"
    echo "thread_cache_size = $thread_cache_size"
    echo "innodb_log_buffer_size = $innodb_log_buffer_size"
    echo
    echo "expire_logs_days = 3"  # 日志过期天数设置为 3 天
    echo "max_binlog_size = 100M"  # 最大二进制日志大小设置为 100M
}

# 主函数调用
calculate_mysql_settings

需要注意的是,我在脚本后面加入了一些我自定义的配置,根据需求自行修改即可。在配置文件里,后面定义的会覆盖前面的,这就是为什么要添加到文件尾的原因。

其中最关键的配置 innodb_buffer_pool_size 我设置为使用当前内存的30%,如果服务器只有数据库/博客这个功能,可以适当的提高比例,比如60%-80%。

英文:Python/Bash Script to Print the Optimized Parameters for MySQL Servers

运维/DevOps

本文一共 812 个汉字, 你数一下对不对.
MySQL参数一键配置脚本: 有效提升数据库性能. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c MySQL参数一键配置脚本: 有效提升数据库性能 MySQL 学习笔记 数据库 计算机 计算机 运维 运维 DevOps
The post MySQL参数一键配置脚本: 有效提升数据库性能 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  2. 一张图告诉你北京的雾霾有多严重 一北京的朋友朋友圈发的: 左上为全新口罩;右上为全新口罩本周一到周五每天室外戴20分钟左右;左下为全新口罩今早室外+公交车戴一个半小时;右下为全新口罩今早开车戴一小时左右. 还有这图 空气污染 – 红色的是严重的.中国,尤其是华北地区,是全球最红的地区,没有”之一”. 本文一共 113 个汉字, 你数一下对不对. 一张图告诉你北京的雾霾有多严重. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
  3. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  4. 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
  5. 谈谈 Utopian 成立公司 就在刚刚 Utopian 的老板 @elear 在 帖子和 discord 上宣布在 意大利成立 Utopian 公司. 可喜可贺! 这开始只是 Steem 上的一个小项目,...
  6. 步步高多媒体学生电脑 汇编程序设计 – 1 英文同步 90年代后期步步高生产的软驱一号(又称步步高多媒体学生电脑)和98型学生电脑都带了软驱,一按电源件, 都从软盘启动(98型可以从内置的电子盘启动) 步步高提供了直接在学习机上写汇编开发的工具 BASM. BASM 可以用来写 6502 汇编,并可以编译成 CMD 小型可执行程序 不支持 EXC 程序. CMD...
  7. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  8. 舍得给员工培训的公司是好公司 最近出差比较多, 很多人问我都干嘛去. 各种开会, 各种培训. 公司从剑桥一个软件公司请了一个专业的软件专家来做软件工程上的顾问. 我是 R&D 研发经理, 所以很自然的就要和他经常讨论, 然后目标是把当前公司的软件开发流程给完善, 提高, 把以前做的不对的得整对了. 培训的内容很多, 让我觉得以前公司完全就是在瞎搞, 什么...

通过dd命令测试硬盘读写速度/性能

2024年10月27日 21:44

要使用 dd 命令测试磁盘速度,可以写入一个临时文件并测量写入和读取速度。以下是一些示例:

测试写入速度

此命令将 1GB 文件写入磁盘,并提供写入速度

dd if=/dev/zero of=testfile bs=1G count=1 oflag=dsync
  • if=/dev/zero 使用空字节源。
  • of=testfile 指定输出文件。
  • bs=1G 设置块大小为 1 GB。
  • count=1 指定只写入一个块。
  • oflag=dsync 确保数据实际写入磁盘,从而提供更准确的速度测量。

示例输出:

1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.58025 s, 679 MB/s

测试读取速度

首先,清除文件系统缓存/Cache以避免缓存影响:

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

然后,将文件读回:

dd if=testfile of=/dev/null bs=1G count=1
  • if=testfile 从刚写入的文件读取。
  • of=/dev/null 丢弃输出,以确保仅测试读取速度。

清理

测试完成后,删除临时文件:

rm testfile

这些命令提供了近似的磁盘速度,但对于更准确的结果,建议使用专用的基准工具,如 fio 或 hdparm。

英文:How to Use dd Command to Test the Hard Disk Speed?

本文一共 234 个汉字, 你数一下对不对.
通过dd命令测试硬盘读写速度/性能. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 通过dd命令测试硬盘读写速度/性能 I.T. LINUX 硬盘
The post 通过dd命令测试硬盘读写速度/性能 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  4. 比特币钱包线上和线下有啥区别? 我玩比特币比较晚, 最近1比特币能到1900多英镑, 真是吓人. 之前有一个线下的比特币钱包, 最近又在 CoinBase 开了一个线上的比特币钱包. 线上和线下的比特币钱包都是一长串的字母数字组合, 很像随机字符串 比如: 1J88t5UAgKBHhMgzkyH9bpY5mPdCYAe5XQ 这个明显是唯一的, 可以在 BlockChain 上查到所有交易记录和余额:...
  5. Naked 红酒 前几天在网上订车票加了1镑钱让送票上门,然后发现了一张 nakedwines 的优惠,买100镑红酒减 60 镑.然后就果断订了12瓶. 在提交订单的时候没看仔细点了一个确定,后来才知道那个是答应每个月成为会员,需要交会费 20 镑钱,然后好处就是每次买酒的时候能享受更大的优惠 (25% – 50%), 并且每个月都会送你一瓶红酒.后来我第一时间就发邮件取消了,但是可能已经下单了,所以第一次还是多送了我一瓶红酒,还有两个漂亮的杯子. 这样算下来, 13瓶红酒(2011, 2012年)+两个杯子,一共花了...
  6. GoPro运动相机可以拿来做什么? 自从新年打折入了GoPro Hero+运动相机以来, 也没怎么用上, 基本上是几天的热性就和其它电子产品一样被冷落到一旁. GoPro运动相机可以拿来做什么, 主要的几个用途是: GoPro 不太适合拍人像 拍孩子孩子容易动, 特别容易就糊了, GoPRO的摄像参数可以调的很少, 所以不要期望有大光圈能背景虚化, 唯一能拍的可能是大长腿, GoPro是广角镜头, 能拍出细长的身段和大长腿,...
  7. C++ 编程练习题 – 最多水容器 (递归) 题意: 给定一个数组, 每个数值代表柱子的高度, 那么求出这些柱子最多可以装多少水. 水的体积由较短的长度乘以两个柱子的距离. 上面的图的输入为 . 蓝色区域最可以装水为49. 最简单的方法就是暴力穷举, 那么复杂度为 O(n^2) , 需要穷举n*(n-1)/2对高度. 可以用递归来实现, 但是递归需要额外O(n)...
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...
❌
❌