Nginx 性能调优与深度监测全攻略
目录
Nginx 性能调优与深度监测全攻略
一、引言
二、Nginx 核心性能调优策略
2.1 基础参数优化
2.1.1 worker 进程配置
2.1.2 事件驱动模型优化
2.2 缓存与资源优化
2.2.1 静态资源缓存
2.2.2 反向代理缓存
2.3 网络与连接优化
2.3.1 TCP 参数调整
2.3.2 Keep-Alive 配置
三、Nginx 深度监测体系构建
3.1 内置监测工具
3.1.1 状态模块
3.1.2 日志分析
3.2 第三方监控方案
3.2.1 Prometheus + Grafana
3.2.2 Datadog
四、实战案例:电商促销场景优化
4.1 问题诊断
4.2 优化措施
4.3 优化效果
五、展望
六、Nginx 与负载均衡优化
6.1 负载均衡算法选择
6.1.1 轮询(Round Robin)
6.1.2 加权轮询(Weighted Round Robin)
6.1.3 IP 哈希(IP Hash)
6.1.4 最少连接(Least Connections)
6.2 后端服务器健康检查
七、Nginx 与 HTTPS 性能优化
7.1 SSL/TLS 协议与加密算法选择
7.2 SSL 会话缓存
7.3 OCSP 装订
八、高级监测与故障排查
8.1 基于日志的故障排查
8.2 性能分析工具
8.3 分布式跟踪
九、未来发展趋势与应对策略
9.1 云原生与容器化
9.2 AI 与自动化运维
9.3 边缘计算
十、总结
一、引言
在互联网应用高并发、低延迟需求日益增长的背景下,Nginx 凭借其轻量级架构和卓越的并发处理能力,成为 Web 服务和反向代理领域的首选。但默认配置下的 Nginx 难以充分发挥性能潜力,本文将系统阐述 Nginx 性能调优策略与深度监测方法,帮助用户在复杂业务场景中实现资源高效利用与服务稳定运行。
二、Nginx 核心性能调优策略
2.1 基础参数优化
2.1.1 worker 进程配置
worker_processes
决定 Nginx 处理请求的并行能力,建议设置为服务器 CPU 核心数或核心数的 1-2 倍。例如,4 核 CPU 服务器可配置:
nginx
worker_processes 4;
worker_connections
控制每个 worker 进程的最大连接数,结合worker_processes
可计算总并发能力。如单进程 1024 连接,4 个进程理论支持 4096 并发:
worker_connections 1024;
2.1.2 事件驱动模型优化
Nginx 默认采用epoll
(Linux)或kqueue
(FreeBSD)高效事件模型,但可通过use
指令显式指定:
events {use epoll;worker_connections 1024;
}
同时调整multi_accept
参数,允许 worker 一次性接收多个新连接:
events {multi_accept on;
}
2.2 缓存与资源优化
2.2.1 静态资源缓存
通过expires
指令设置浏览器缓存策略,减少重复请求:
location ~* \.(jpg|png|css|js)$ {expires 30d;access_log off;
}
2.2.2 反向代理缓存
配置proxy_cache
实现动态内容缓存,提升后端服务响应速度:
http {proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;server {location / {proxy_cache my_cache;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_pass http://backend_servers;}}
}
2.3 网络与连接优化
2.3.1 TCP 参数调整
通过系统参数优化 TCP 连接性能,编辑/etc/sysctl.conf
:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 65535
执行sysctl -p
使配置生效。
2.3.2 Keep-Alive 配置
延长连接存活时间,减少握手开销:
http {keepalive_timeout 65;keepalive_requests 100;
}
三、Nginx 深度监测体系构建
3.1 内置监测工具
3.1.1 状态模块
启用ngx_http_stub_status_module
获取实时状态:
server {location /status {stub_status on;access_log off;allow 127.0.0.1;deny all;}
}
访问http://your_domain/status
可查看连接数、请求处理等数据:
Active connections: 123
server accepts handled requests10000 10000 50000
Reading: 10 Writing: 20 Waiting: 93
3.1.2 日志分析
通过自定义日志格式收集关键信息:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" ''$request_time $upstream_response_time';
access_log /var/log/nginx/access.log custom;
使用awk
、grep
或 ELK 栈进行日志统计分析:
# 统计TOP 10访问IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
3.2 第三方监控方案
3.2.1 Prometheus + Grafana
安装nginx_exporter
:
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.10.0/nginx-prometheus-exporter-0.10.0.linux-amd64.tar.gz
tar -xvf nginx-prometheus-exporter-0.10.0.linux-amd64.tar.gz
./nginx-prometheus-exporter --nginx.scrape-uri http://127.0.0.1/status
配置 Prometheus 抓取任务:
scrape_configs:- job_name: 'nginx'static_configs:- targets: ['localhost:9113']
在 Grafana 导入 Nginx 监控模板,可视化展示 QPS、响应时间等指标。
3.2.2 Datadog
安装 Agent:
DD_API_KEY=YOUR_API_KEY bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/install_agent.sh)"
配置 Nginx 集成:
# /etc/datadog-agent/conf.d/nginx.d/conf.yaml
init_config:instances:- nginx_status_url: http://127.0.0.1/statuscollect_status_metrics: true
重启 Agent 后,在 Datadog 平台查看实时监控与告警。
四、实战案例:电商促销场景优化
4.1 问题诊断
某电商平台大促期间,Nginx 出现 502 错误激增、响应延迟达 3 秒以上。通过ngx_http_stub_status_module
发现Waiting
连接数持续高位,日志分析显示大量请求超时。
4.2 优化措施
- 参数调整:将
worker_connections
从 1024 提升至 2048,keepalive_timeout
缩短至 30 秒。 - 缓存升级:启用
proxy_cache
缓存热门商品页面,命中率提升至 65%。 - 硬件优化:将日志存储迁移至 SSD,减少 I/O 阻塞。
- 监控部署:部署 Prometheus + Grafana 实时监控 QPS 与错误率。
4.3 优化效果
优化后系统支撑并发量从 5000 提升至 12000,平均响应时间降至 800ms,502 错误率下降 92%。
五、展望
Nginx 性能优化需结合业务场景进行参数微调与资源适配,而深度监测则是保障服务稳定的关键。随着云原生、边缘计算等技术发展,Nginx 将面临更多挑战,未来可探索基于 Service Mesh 的动态流量管理与 AI 驱动的智能调优,持续释放其性能潜力
六、Nginx 与负载均衡优化
6.1 负载均衡算法选择
Nginx 提供了多种负载均衡算法,不同的算法适用于不同的业务场景。
6.1.1 轮询(Round Robin)
这是 Nginx 默认的负载均衡算法,它按顺序依次将请求分发到后端服务器。这种算法简单公平,适用于后端服务器性能相近的场景。
http {upstream backend {server backend1.example.com;server backend2.example.com;}server {location / {proxy_pass http://backend;}}
}
6.1.2 加权轮询(Weighted Round Robin)
当后端服务器性能存在差异时,可以为每个服务器分配不同的权重,权重越高,接收的请求就越多。
http {upstream backend {server backend1.example.com weight=3;server backend2.example.com weight=1;}server {location / {proxy_pass http://backend;}}
}
6.1.3 IP 哈希(IP Hash)
根据客户端的 IP 地址进行哈希计算,将同一客户端的请求始终分发到同一台后端服务器。这种算法适用于需要保持会话一致性的场景,如购物车、用户登录状态等。
http {upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;}server {location / {proxy_pass http://backend;}}
}
6.1.4 最少连接(Least Connections)
将请求分发到当前连接数最少的后端服务器,确保后端服务器的负载相对均衡。适用于处理请求时间差异较大的场景。
http {upstream backend {least_conn;server backend1.example.com;server backend2.example.com;}server {location / {proxy_pass http://backend;}}
}
6.2 后端服务器健康检查
为了确保负载均衡的有效性,需要对后端服务器进行健康检查。Nginx 可以通过ngx_http_upstream_module
模块实现简单的健康检查。
http {upstream backend {server backend1.example.com;server backend2.example.com;check interval=3000 rise=2 fall=3 timeout=1000 type=http;check_http_send "HEAD /health_check HTTP/1.0\r\n\r\n";check_http_expect_alive http_2xx http_3xx;}server {location / {proxy_pass http://backend;}}
}
上述配置中,Nginx 每 3 秒(interval=3000
)对后端服务器进行一次健康检查,连续 2 次(rise=2
)检查成功则认为服务器恢复正常,连续 3 次(fall=3
)检查失败则认为服务器不可用。检查请求为HEAD /health_check
,期望的响应状态码为 2xx 和 3xx。
七、Nginx 与 HTTPS 性能优化
7.1 SSL/TLS 协议与加密算法选择
选择合适的 SSL/TLS 协议和加密算法可以提高 HTTPS 连接的安全性和性能。建议使用较新的 TLS 协议版本,如 TLS 1.3,并选择高效的加密算法。
server {listen 443 ssl;server_name example.com;ssl_protocols TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;location / {proxy_pass http://backend;}
}
在上述配置中,只允许使用 TLS 1.3 协议,选择高强度的加密算法,并且优先使用服务器端的加密算法。
7.2 SSL 会话缓存
启用 SSL 会话缓存可以减少 SSL 握手的开销,提高 HTTPS 连接的建立速度。
http {ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;location / {proxy_pass http://backend;}}
}
这里设置了一个共享的 SSL 会话缓存,大小为 10MB,会话超时时间为 10 分钟。
7.3 OCSP 装订
OCSP 装订可以避免客户端在建立 HTTPS 连接时向证书颁发机构查询证书状态,从而减少延迟。
server {listen 443 ssl;server_name example.com;ssl_stapling on;ssl_stapling_verify on;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;location / {proxy_pass http://backend;}
}
上述配置启用了 OCSP 装订和验证功能,并指定了 DNS 解析器。
八、高级监测与故障排查
8.1 基于日志的故障排查
Nginx 的错误日志和访问日志是故障排查的重要依据。通过分析错误日志,可以定位配置错误、连接问题等;通过分析访问日志,可以了解客户端的请求行为和异常请求。
# 查看错误日志中的最新错误信息
tail -n 20 /var/log/nginx/error.log# 查找访问日志中状态码为 500 的请求
grep ' 500 ' /var/log/nginx/access.log
8.2 性能分析工具
可以使用strace
、ltrace
等工具对 Nginx 进程进行系统调用和库函数调用分析,找出性能瓶颈。
# 跟踪 Nginx 主进程的系统调用
strace -p $(ps -ef | grep nginx | grep master | awk '{print $2}')
8.3 分布式跟踪
在微服务架构中,可以使用分布式跟踪工具如 Jaeger、Zipkin 对 Nginx 参与的请求链路进行跟踪,了解请求在各个服务之间的流转和性能情况。
# 配置 Nginx 与 Jaeger 集成
load_module modules/ngx_http_jaeger_module.so;http {jaeger_service_name "nginx";jaeger_sample_type "const";jaeger_sample_param 1;jaeger_collector_endpoint "http://jaeger-collector:14268/api/traces";server {listen 80;server_name example.com;location / {proxy_pass http://backend;}}
}
九、未来发展趋势与应对策略
9.1 云原生与容器化
随着云原生和容器化技术的发展,Nginx 作为 Kubernetes 中的 Ingress Controller 得到了广泛应用。未来需要进一步优化 Nginx 在容器环境中的性能,如减少容器启动时间、优化网络配置等。可以使用 Helm 等工具对 Nginx Ingress Controller 进行快速部署和配置管理。
9.2 AI 与自动化运维
AI 技术在运维领域的应用将越来越广泛。可以利用机器学习算法对 Nginx 的性能数据进行分析,预测性能瓶颈和故障,实现自动化的调优和故障处理。例如,使用深度学习模型对请求流量进行预测,提前调整 Nginx 的配置参数。
9.3 边缘计算
边缘计算的兴起使得 Nginx 需要在边缘节点上提供高效的服务。未来需要优化 Nginx 在低带宽、高延迟环境下的性能,如采用缓存预加载、边缘计算节点间的协同缓存等技术。
十、总结
Nginx 的性能调优和深度监测是一个持续的过程,需要综合考虑服务器硬件、软件配置、业务场景等多方面因素。通过合理选择负载均衡算法、优化 HTTPS 性能、利用高级监测工具和应对未来发展趋势,可以不断提升 Nginx 的性能和可靠性,为用户提供更加稳定、高效的服务。在实际应用中,要根据具体情况灵活运用各种调优和监测方法,不断探索和创新,以适应不断变化的业务需求和技术环境
相关文章:
Nginx 性能调优与深度监测全攻略
目录 Nginx 性能调优与深度监测全攻略 一、引言 二、Nginx 核心性能调优策略 2.1 基础参数优化 2.1.1 worker 进程配置 2.1.2 事件驱动模型优化 2.2 缓存与资源优化 2.2.1 静态资源缓存 2.2.2 反向代理缓存 2.3 网络与连接优化 2.3.1 TCP 参数调整 2.3.2 Keep-Aliv…...
bad interpreter: No such file or directory
shell脚本加sqlite插入语句,内容如下: #!/bin/bash # 数据库文件路径 DB_FILE"/opt/ecu/db/Test.db" # 检查数据库文件所在目录是否存在,若不存在则创建 DB_DIR$(dirname "$DB_FILE") if [ ! -d "$DB_FILE" ]…...
python安装pyqt5失败
记录 PyQt5不支持3.10及以上版本,pip install PyQt5时报错raise PyProjectOptionException(qmake 详细错误信息如下: $ pip install PyQt5 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting pyqt5Using cached https://pypi…...
【风控】模型监控和异常处理
在风控模型的全生命周期中,模型监控与异常处理是保障模型持续、稳定、可靠运行的关键环节。本指南旨在提供系统化、可落地的监控指标、预警策略及异常处置流程,帮助团队快速定位、响应并修复线上模型问题,最大限度降低风险。 1.模型监控与预…...
高并发内存池(一):项目简介+定长内存池的实现
目录 一,项目介绍 二,什么是内存池 1,池化技术 2,内存池 3,内存池主要解决的问题 4,malloc 三,实现一个定长内存池 定长内存池的设计 大致结构 核心功能实现 申请一块大小为T的内存 释…...
STM32--TIM--函数
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState) 用于使能或禁用指定的定时器中断。...
文生图(Text-to-Image)的发展
文章目录 1. 早期探索(2010-2015):传统方法与初步尝试2. 文本条件GAN时代(2016-2019)3. 自回归与VQ-VAE时代(2019-2021)4. 扩散模型革命(2021-2022)(1) 扩散模型基础突破…...
vscode预览模式(点击文件时默认覆盖当前标签,标签名称显示为斜体,可通过双击该标签取消)覆盖标签、新窗打开
文章目录 VS Code 预览模式如何取消预览模式(即“固定”标签页)?预览模式有什么用? VS Code 预览模式 在 VS Code 中,当你单击文件浏览器(例如,资源管理器侧边栏)中的某个文件时&am…...
热部署相关
手动热部署 启动热部署后代码进行修改可以不用重启整个项目Carl F9修改的代码就可以直接生效了 热部署只进行重启的操作而不用进行重载的操作 自动热部署 自定义重启排除项 关闭热部署 ture为开启热部署false为关闭 如果直接在application.yml里写可能会被其他优先级更高的配…...
高防ip是怎么做到分布式防御的
高防IP的分布式防御体系通过多维度技术协同实现攻击流量的分散处理与智能拦截,其核心机制可从以下五个层面解析: 一、全球节点网络布局 多区域节点覆盖 在全球关键互联网枢纽(如北美、欧洲、亚太)部署清洗中心&am…...
结构可视化:利用数据编辑器剖析数据内在架构
结构可视化聚焦于展示数据的内部结构和各部分之间的关系,使企业能够深入理解数据的组织方式和层次体系,从而更好地进行数据管理和分析。通过结构可视化,企业可以清晰地看到数据的层次结构、关联关系以及数据流动路径,为数据驱动的…...
QT编程练习20250507
#include <stdio.h> // 包含标准输入输出库 #include <stdlib.h> // 包含通用工具库(如malloc, free等) #include <string> // 包含C string类定义 #include <iostream> // 包含C输入输出流库using namespace std; // 使用st…...
【软件设计师:算法】3.排序算法
一、排序 将一组杂乱无章的数据按一定的规律次序排列起来。 排序的目的是什么? 便于查找!排序算法的好坏如何衡量? 时间效率——排序速度(即排序所花费的全部比较次数)空间效率——占内存辅助空间的大小稳定性——若两个记录A和B的关键字值相等,但排序后A、B的先后次序保…...
Linux 内核学习(7) --- 字符设备驱动
字符设备驱动程序 Linux 中主要有三类设备的驱动程序,分别是字符设备驱动程序,块设备驱动程序和网络设备驱动程序 字符设备是指在 I/O 传输过程中以字符为单位进行传输的设备,例如键盘,打印机等,字符设备的驱动程序结…...
vue3+vite项目引入tailwindcss
从2025年1月tailwindcss4.0发布开始使用tailwindcss比之前简化很多 1,安装 yarn add tailwindcss tailwindcss/vite2,配置vite.config.js import tailwindcss from tailwindcss/vite;...plugins: [tailwindcss(),...] ...3,在主css文件顶部添加 注意一定是css文件,不能是sc…...
IIS配置SSL
打开iis 如果搜不到iis,要先开 再搜就打得开了 cmd中找到本机ip 用http访问本机ip 把原本的http绑定删了 再用http访问本机ip就不行了 只能用https访问了...
LeetCode:对称二叉树
1、题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: 树中…...
6天从0到精通:MySQL基础快速入门指南
放在前头 6天从0到精通:MySQL基础快速入门指南 6天从0到精通:MySQL基础快速入门指南 在数据驱动的时代浪潮下,MySQL作为全球最受欢迎的开源关系型数据库管理系统之一,广泛应用于Web开发、数据分析、云计算等多个领域。无论是刚…...
信息论12:从信息增益到信息增益比——决策树中的惩罚机制与应用
从信息增益到信息增益比:决策树中的惩罚机制与应用 引言:当"信息量"遇到"公平性" 在2018年某银行的信用卡风控系统中,数据分析师发现一个诡异现象:客户ID号在决策树模型中竟成为最重要的特征。这个案例揭示…...
C++ -- 哈希扩展
目录 位图 位图概念 位图的实现 位图应用 布隆过滤器 布隆过滤器的提出 布隆过滤器概念 布隆过滤器的插入 布隆过滤器的查找 布隆过滤器的删除 位图 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数…...
AI大模型分类以及Prompt优化技巧
目录 一、AI大模型分类 1、按模态分类 2、按开源性分类 3、按规模分类 4、按用途分类 如何对比和选择大模型 二、Token 如何计算 Token 如何估算Token成本 三、Prompt工程 Prompt优化技巧 基础提示技巧 1、明确指定任何和角色 2、提供详细说明和具体示例 3、使用…...
将本地项目提交到新建的git仓库
方式一: # 登录git,新建git仓库和指定的分支,如master、dev# 下载代码,默认下载master分支 git clone http://10.*.*.67/performance_library/pfme-*.git # 切换到想要提交代码的dev分支 git checkout dev# 添加想要提交的文件 git add .#…...
【wpf】10 C#树形控件高效实现:递归构建与路径查找优化详解
在WPF应用程序开发中,树形控件的实现是常见且具有挑战性的需求。本文将深入解析一套高效树形结构的实现方案,包含递归构建、路径查找优化、动态交互等多个关键技术点。 一、递归构建树形结构 private TreeItem CreateTreeViewItem(TreeNode node) {var…...
低空科技护航珞樱春色,技术引领助推广阔应用
春风拂珞珈,樱海绽放时。赏樱季已接近尾声,作为武汉大学测绘遥感信息工程全国重点实验室的成果转化科技型企业,大势智慧积极参与校园的智能化建设,助力武汉大学的樱花季巡航管理,打造更为安全、有序的赏樱体验。 低空…...
Tiny Machine Learning在人类行为分析中的全面综述
论文标题: 中文:《Tiny Machine Learning在人类行为分析中的全面综述》 英文:A Comprehensive Survey on Tiny Machine Learning for Human Behavior Analysis 作者信息: Ismail Lamaakal, Student Member, IEEE, Siham Essahr…...
8.12 GitHub Sentinel企业级进化:容器化优化×AI监控,效率提升300%实战
GitHub Sentinel 扩展优化与商业化演进路径 关键词:企业级 Agent 扩展性设计、容器化部署优化、多格式报告生成、第三方服务集成、SaaS 服务架构 1. 功能扩展方向 1.1 多格式报告生成技术实现 采用模板引擎与文件流处理技术实现动态报告生成: #mermaid-svg-2BhQlvVsDp5NdL…...
算法-时间复杂度和空间复杂度
刷算法必备时间和空间复杂度,记录下方便查询。 时间复杂度 概念 时间复杂度衡量的是算法 执行所需的时间 随输入规模 n 增长的变化趋势,用大O 表示法描述(通常是看这个循环)。 分类 常数时间O(1) 无论输入多大,执行…...
springboot国家化多语言实现
前言 公司在做国际化项目时需要匹配多语言环境,通过spring实现i18n国际化方便快捷 项目结构 src/ ├── main/ │ ├── java/ │ │ └── com/example/i18ndemo/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # …...
第2章 算法分析基础
2-1 算法的时间复杂度分析 2.1.1 输入规模与基本语句 输入规模:算法处理数据的规模,通常用 n 表示。 基本语句:执行次数与输入规模直接相关的关键操作。 例2.1 顺序查找 int SeqSearch(int A[], int n, int k) { for (int i 0; i < n…...
vue2 计算属性 computed
计算属性他是一个属性,他不是一个函数,使用的时候不要加括号 reduce reduce 是 JavaScript 数组的一个高阶函数,用于对数组中的每个元素执行一个累积计算,最终返回一个单一的值。...
Milvus 向量数据库详解与实践指南
一、Milvus 核心介绍 1. 什么是 Milvus? Milvus 是一款开源、高性能、可扩展的向量数据库,专门为海量向量数据的存储、索引和检索而设计。它支持近似最近邻搜索(ANN),适用于图像检索、自然语言处理(NLP&am…...
记录一次 python 文件环境变量配置-sqlmap.py
第一步:环境变量配置 C:\Users\14913\Downloads\application\3.secure\sqlmap-2025.5.6 或者 C:\Users\14913\Downloads\application\3.secure\sqlmap-2025.5.6 都可以! 第二步 使用 第一步:不再进目录 第二步:不再python … s…...
使用大语言模型进行机器人规划(Robot planning with LLMs)
李升伟 编译 长期规划在机器人学领域可以从经典控制方法与大型语言模型在现实世界知识能力的结合中获益。 在20世纪80年代,机器人学和人工智能(AI)领域的专家提出了莫雷奇悖论,观察到人类看似简单的涉及移动和感知的任务&#x…...
STM32 CAN总线
目录 定时传输CAN简介和硬件电路 CAN简介 主流通信协议对比 编辑 CAN硬件电路 编辑 CAN电平标准 CAN收发器 – TJA1050(高速CAN) CAN物理层特性 帧格式 数据帧 遥控帧 错误帧 过载帧 编辑 帧间隔 编辑 位填充 波形实例 位…...
使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
我有一个测试计划,里面有两个线程组,如下: 添加了一个HTTP请求默认值: 然后我使用如下命令生成的可视化报告是两个线程组合并后的聚合报告。 jmeter -n -t 百度测试计划.jmx -l baidu.txt -e -o ./baidu但是我想要的效果是每…...
RabbitMQ如何保证消息不丢失?
在RabbitMQ中,消息丢失可能发生在三个阶段:生产者发送消息时、消息在RabbitMQ服务器内部传递时、消费者接收消息时。为了保证消息不丢失,需要从这三个方面分别采取措施: 1. 生产者确保消息发送成功 开启确认模式(Conf…...
RAG 的介绍及评价方法
RAG的作用 大模型虽然具备处理复杂语言任务的强大能力,但在知识更新和依赖外部信息的及时性方面存在局限。大模型在训练时捕获的知识通常是静态的,一旦训练完成,模型便不再更新,无法掌握训练数据集之外的最新信息或事件。RAG可以…...
Linux网络新手注意事项与配置指南
Linux系统在网络管理方面提供了丰富的工具和灵活的配置方式,但对于新手来说,掌握正确的操作方法和注意事项至关重要。本文将从网络基础概念、配置工具、安全设置、故障排查以及常见错误等多个方面,结合具体代码示例,详细讲解Linux网络管理的核心内容,帮助新手快速入门并避…...
CI/CD与DevOps流程流程简述(提供思路)
一 CI/CD流程详解:代码集成、测试与发布部署 引言 在软件开发的世界里,CI/CD(持续集成/持续交付)就像是一套精密的流水线,确保代码从开发到上线的整个过程高效、稳定。我作为一名资深的软件工程师,接下来…...
【AWS+Wordpress-准备阶段】AWS注册+创建EC2实例
前言 自学笔记,解决问题为主,亲测有效,欢迎补充。 本地WP文件部署到AWS整体步骤如下:(本文重点:AWS准备完成) 0. [AWS 准备] 注册 AWS 并创建 EC2 实例 ↓ 1. [生成安装包:用 Du…...
FPGA----基于ZYNQ 7020实现定制化的EPICS通信系统
引言:前文我们降到了,使用alinx提供的sd卡,直接在上面编译即可。那么,如果我们的在FPGA侧有一些个性化的开发,那么生成的image.ub和boot.bin将于原sd卡中的不一致,我们应该如何坐呢? 补充知识点…...
读《暗时间》有感
读《暗时间》有感 反思与笔记 这本书还是我无意中使用 ima 给我写职业规划的时候给出的,由于有收藏的习惯,我就去找了这本书。当读到第一章暗时间的时候给了我很大的冲击,我本身就是一个想快速读完一本书的人,看到东西没有深入思…...
MIT关节电机相序校准
UVW三相相序判断 电机相序校正是确保多关节控制系统正常运行的重要步骤。在实际应用中,每个电机定子的三相线(W、U、V)的连接顺序可能存在差异,这是由于制造过程中的随机接线所致。不过,通过简单的校正方法,…...
Qwen2.5模型结构
self.lm_head nn.Linear(config.hidden_size, config.vocab_size, biasFalse) 这个是用来干嘛的 输出层,词汇投影层,将模型输出的隐藏状态向量映射回词表空间,用于预测下一个token # 预测 logits,未经过 softmax lm_logits self…...
2021-11-11 C++泰勒sin(x)以2步进乘方除以阶乘加减第N项
缘由c书本题,求解了,求解-编程语言-CSDN问答 int n 10, d 3, z -1; double x 2.5, xx x;while (n){xx (乘方(x, d) / 阶乘(d)) * z;d 2, --n, z * -1;}std::cout << xx << std::endl;...
【MySQL】C语言访问数据库
C语言访问数据库 一. Linux 安装 MySQL 动静态库二. 使用MySQL数据库1. 创建MySQL对象2. 连接MySQL数据库3. 释放MySQL对象4. SQL 语句操作1. 插入操作2. 修改操作3. 删除操作4. 查询操作 准备工作 use mysql; select user, host from user;# 创建本地连接的用户 create user c…...
dify 部署后docker 配置文件修改
1:修改 复制 ./dify/docker/.env.example ./dify/docker/.env 添加一下内容 # 启用自定义模型 CUSTOM_MODEL_ENABLEDtrue# 将OLLAMA_API_BASE_URL 改为宿主机的物理ip OLLAMA_API_BASE_URLhttp://192.168.72.8:11434# vllm 的 OPENAI的兼容 API 地址 CUSTOM_MODE…...
【神经网络与深度学习】VAE 和 GAN
这位大佬写的 VAE 的讲解很不错 VAE 和 GAN 的相同点和不同点 引言 VAE(变分自编码器)和 GAN(生成对抗网络)是深度学习中两种主要的生成模型,它们在数据生成任务中发挥着重要作用。虽然它们的目标相似,都…...
2-C#控件
2-控件 1.panel控件的使用 private void button3_Click(object sender, EventArgs e){Form2 my2 new Form2();my2.TopLevel false;this.panel1.Controls.Add(my2);my2.BringToFront();my2.Show();}private void button4_Click(object sender, EventArgs e){Form3 my3 new F…...
1.1.2 简化迭代器 yield return的使用
yield return 是一个用于简化迭代器(Iterator)实现的关键字组合。它的核心作用是让开发者能够以更简洁的方式定义一个按需生成序列的方法(生成器方法),而无需显式实现 IEnumerable 或 IEnumerator 接口。yield return …...