知其然,知其所以然
常见报错实测 2026-10-29

Nginx [emerg] 启动失败:15 个常见配置错误的 nginx -t 原文,nginx -t 通过仍会 bind() failed,reload 失败时旧配置继续生效

实测 Nginx [emerg] 启动失败:15 个错误配置在 nginx -t 里各是什么报错(unknown directive、is not terminated by ";"、unexpected "}"、host not found in upstream 等)、哪些不会失败(include 通配符没匹配到文件、重复 server_name 只是 warn);nginx -t 通过仍可能 bind() failed (48: Address already in use);reload 失败时旧配置继续生效;proxy_pass 用变量推迟到运行时 502。

Nginx [emerg] unknown directive bind() failed Address already in use host not found in upstream nginx -t reload 报错 真实验证 动画演示
常见报错实测 2026-10-29

Nginx 404 与 403:root 和 alias 的路径拼接、目录请求为什么是 403、SPA 的 try_files 让缺失资源返回 200

实测 Nginx 404 与 403:root 把整个 URI 接在后面、alias 替换匹配部分,结尾斜杠不一致会拼成 filesa.txt 或让 /staticx.txt 也匹配;目录没有 index 是 403 而不是 404;文件和上级目录的权限引起的 403;SPA 的 try_files 回退会让缺失的静态资源返回 200 的 HTML。

Nginx 404 Not Found 403 Forbidden root alias try_files autoindex directory index forbidden 报错 真实验证 动画演示
常见报错实测 2026-10-29

PostgreSQL FATAL: sorry, too many clients already:普通用户最多占 7/10,第 8 个先报 remaining connection slots,调大要重启

实测 PostgreSQL FATAL: sorry, too many clients already:max_connections = 10 时普通用户最多占 7 个,第 8 个先报 remaining connection slots are reserved for roles with the SUPERUSER attribute,全满才报 too many clients;pg_stat_activity 找占用者;调大 max_connections 要重启(pending_restart);角色与数据库的连接限制是另外的报错;idle_session_timeout 回收闲置连接。

PostgreSQL sorry too many clients already max_connections superuser_reserved_connections pg_stat_activity idle_session_timeout 报错 真实验证 动画演示
常见报错实测 2026-10-29

PostgreSQL ERROR: deadlock detected:先开始等锁的会话被回滚,服务端日志才有两边的语句,统一加锁顺序后死锁从 19/20 降到 0

实测 PostgreSQL ERROR: deadlock detected:两个会话反序更新两行,先开始等锁的被回滚(6 次都是 A,换启动顺序则是 B);检测耗时约等于 deadlock_timeout(0.63 / 1.53 / 3.53 s);服务端日志才有两边的完整语句;统一加锁顺序让 20 个并发事务的死锁从 19 个降到 0,但总用时从 2.3 s 变成 6.1 s;SQLSTATE 是 40P01。

PostgreSQL deadlock detected 40P01 deadlock_timeout log_lock_waits 死锁 报错 真实验证 动画演示
Spring 全家桶 2026-10-26

Spring MVC 的 API 版本号:声明 version = "1.2+",请求 1.9 为什么还是 400

实测 Spring Boot 4.0.8(Spring Framework 7.0.9)的 MVC API 版本号:@GetMapping(version = "1.2+") 在没有把 1.9 列入 supported 时请求 1.9 返回 400(InvalidApiVersionException);三种异常、default 与 required、header/查询参数/路径段策略逐一测。

Spring Boot Spring MVC API 版本号 apiversion version Spring Framework 7 真实验证 动画演示
Spring 全家桶 2026-10-26

@ImportHttpServices 配了 base-url 还报 URI with undefined scheme:组名、starter 与默认组的规则

实测 Spring Boot 4.0.8 的 @ImportHttpServices:分组配置在 spring.http.serviceclient.<组名> 下;组名写错无任何启动提示、调用时才抛 URI with undefined scheme;没有 starter-restclient 时属性不生效;不写 group 落在 default 组;read-timeout 按组生效。

Spring Boot @ImportHttpServices HTTP Interface spring.http.serviceclient base-url Spring Framework 7 真实验证 动画演示
Spring 全家桶 2026-10-26

BeanRegistrar 实测:用代码循环注册 Bean,同名冲突与 @ConditionalOnMissingBean 的表现

实测 Spring Framework 7.0.9 的 BeanRegistrar:循环注册多个 Bean、Spec 的 prototype/lazyInit/primary/fallback、按 profile 注册实现;同名冲突报 defined in null;@ConditionalOnMissingBean 没有把它注册的 Bean 当成已存在。

Spring Boot BeanRegistrar Spring Framework 7 registerBean ConditionalOnMissingBean 真实验证 动画演示
Spring 全家桶 2026-10-26

RestTestClient 与 TestRestTemplate:Boot 4 里测 Controller 要加哪个依赖、换哪个包名

实测 Spring Boot 4.0.8:RestTestClient 的 bindToController、bindToApplicationContext 与 @AutoConfigureRestTestClient;旧依赖下编译报 package org.springframework.boot.resttestclient.autoconfigure does not exist;Boot 3 的 TestRestTemplate 换包名、要加 @AutoConfigureTestRestTemplate 和 starter-restclient。

Spring Boot RestTestClient TestRestTemplate AutoConfigureRestTestClient spring-boot-starter-webmvc-test Spring Boot 4 真实验证 动画演示
Spring 全家桶 2026-10-26

Boot 4 里 Undertow 去哪了:starter-undertow 解析不了,换 Jetty 与硬塞 3.5 的 starter 各会怎样

实测 Spring Boot 4.0.8 的 Undertow:BOM 里没有 spring-boot-starter-undertow 的版本,Maven 报 dependencies.dependency.version is missing;server.undertow.* 属性 25 个变 0 个;换 Jetty 能直接启动;硬塞 3.5.16 的 starter 时仍然跑 Tomcat,去掉 Tomcat 则 MissingWebServerFactoryBeanException。

Spring Boot Spring Boot 4 Undertow Jetty Tomcat spring-boot-starter-undertow 真实验证 动画演示
Spring 全家桶 2026-10-26

Boot 4 的 @WebMvcTest、@DataJpaTest 为什么编译不过:新包名与每个注解对应的 test starter

实测 Spring Boot 4.0.8 的测试切片注解:14 个常用注解里 10 个换了包,@WebMvcTest 到 org.springframework.boot.webmvc.test.autoconfigure;每个注解在独立模块里,要加对应的 test starter;Boot 3 的 import 在四种依赖组合下都编译失败。

Spring Boot Spring Boot 4 @WebMvcTest @DataJpaTest 测试切片 spring-boot-starter-webmvc-test 真实验证 动画演示
Spring 全家桶 2026-10-26

Spring Retry 与 Framework 7 的 @Retryable 同名:次数差 1,启用注解用错不报错

实测 Spring Boot 4.0.8:spring-retry 仍由 Boot 管理(2.0.13);Spring Retry 的 maxAttempts = 3 调用 3 次,Framework 7 的 maxRetries = 3 调用 4 次;注解与 @Enable 用错时悄悄不重试;Spring Retry 缺 starter-aspectj 启动失败。

Spring Boot Spring Retry @Retryable Spring Framework 7 EnableResilientMethods Spring Boot 4 真实验证 动画演示
Spring 全家桶 2026-10-26

spring-boot-starter-opentelemetry:只加依赖会导出什么,traces、metrics、logs 各要配什么

实测 Spring Boot 4.0.8 的 spring-boot-starter-opentelemetry:只加依赖时应用每分钟往 localhost:4318 推 metrics,traces 与 logs 不导出;配了 logs 的地址日志也没出去;三个信号各有开关;收集端不可达时业务不受影响,日志出现 OtlpMeterRegistry 的 WARN。

Spring Boot Spring Boot 4 OpenTelemetry spring-boot-starter-opentelemetry OTLP Micrometer 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号