Skip to content

ITDOG 网站测速执行快速测试Halo崩溃 #7802

@dhbxs

Description

@dhbxs

前置条件

  • 已经在 issues 列表中搜索了相关问题。
  • 这是 Halo 项目本身存在的问题,如果是非项目本身的问题(如:安装部署问题),建议在 Discussions 提交。
  • 已经尝试过停用所有的插件,排除是插件导致的问题。
  • 如果是插件和主题的问题,请在对应的插件和主题仓库提交。

系统信息

  • 外部访问地址: https://blog.dhbxs.top
  • 启动时间: 2025-10-12 15:27
  • 版本: 2.21.9
  • 构建时间: 2025-09-24 16:32
  • Git Commit: fa0b244
  • Java: IBM Semeru Runtime Open Edition / 21.0.8+9-LTS
  • 数据库: PostgreSQL / 17.6
  • 操作系统: Linux / 6.8.0-31-generic
  • 已激活主题: Earth 1.13.1
  • 已启动插件:

使用的哪种方式运行?

Docker Compose

发生了什么?

使用 ITDog 等类似的网站测速工具时,选择快速测试,即多个节点并发请求测速,Halo就会崩掉,整个站点都会502或者503等,过一会儿3~5分钟自行恢复

系统配置
腾讯云轻量应用服务器
2核心2G内存4Mbps带宽
数据库使用PostgreSQL 部署于同服务器,通过docker局域网访问
1Panel面板部署,OpenResty反代

复现步骤

  1. 打开 ITDog
  2. 输入网站URL https://blog.dhbxs.top/archives/d06540f2
  3. 点击快速测试
  4. 全部失败,同时,整个站点无法正常访问
  5. 过3~5分钟自行恢复,站点可正常访问

相关日志输出

2025-10-13T00:08:39.141+08:00  WARN 7 --- [loomBoundedElastic-20499] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post
2025-10-13T00:08:41.135+08:00  WARN 7 --- [loomBoundedElastic-20517] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post
2025-10-13T00:08:41.183+08:00  WARN 7 --- [loomBoundedElastic-20541] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:41.183+08:00  WARN 7 --- [loomBoundedElastic-20534] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:42.405+08:00  WARN 7 --- [loomBoundedElastic-20549] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:42.887+08:00  WARN 7 --- [loomBoundedElastic-20557] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:44.791+08:00  WARN 7 --- [loomBoundedElastic-20581] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:44.815+08:00  WARN 7 --- [loomBoundedElastic-20582] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post
2025-10-13T00:08:44.846+08:00  WARN 7 --- [loomBoundedElastic-20583] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:45.062+08:00  WARN 7 --- [loomBoundedElastic-20584] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:45.789+08:00  WARN 7 --- [loomBoundedElastic-20589] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:46.265+08:00  WARN 7 --- [loomBoundedElastic-20592] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:46.275+08:00  WARN 7 --- [loomBoundedElastic-20593] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:46.709+08:00  WARN 7 --- [loomBoundedElastic-20597] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:46.732+08:00  WARN 7 --- [loomBoundedElastic-20599] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post
2025-10-13T00:08:46.993+08:00  WARN 7 --- [loomBoundedElastic-20601] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while outputting template: post
2025-10-13T00:08:47.019+08:00 ERROR 7 --- [reactor-http-epoll-3] o.s.w.s.adapter.HttpWebHandlerAdapter    : [3bf18da7-11739] Error [reactor.core.Exceptions$ReactorRejectedExecutionException: Scheduler unavailable] for HTTP GET "/archives/d06540f2", but ServerHttpResponse already committed (200 OK)
2025-10-13T00:08:47.024+08:00 ERROR 7 --- [reactor-http-epoll-3] r.n.http.server.HttpServerOperations     : [3bf18da7-1, L:/172.18.0.4:8090 - R:/172.18.0.1:39296] Error finishing response. Closing connection

reactor.core.Exceptions$ReactorRejectedExecutionException: Scheduler unavailable
	at reactor.core.Exceptions.failWithRejected(Exceptions.java:285) ~[reactor-core-3.7.11.jar:3.7.11]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ Handler run.halo.app.theme.router.factories.PostRouteFactory$$Lambda/0x00000000d34fb888@9a9bb2c2 [DispatcherHandler]
	*__checkpoint ⇢ run.halo.app.security.InitializeRedirectionWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.app.security.device.DeviceSessionFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ SwitchUserWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ AuthorizationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ ExceptionTranslationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ LogoutWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ ServerRequestCacheWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ AnonymousAuthenticationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ MapOAuth2AuthenticationFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ AuthenticationWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢  [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ CaptchaWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ ReactorContextWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ CsrfWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ CorsWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ HttpHeaderWriterWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ SecurityWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.moments.rss.OldRssRouteRedirectionFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.comment.widget.captcha.CommentCaptchaFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.app.infra.webfilter.AdditionalWebFilterChainProxy [DefaultWebFilterChain]
	*__checkpoint ⇢ org.springframework.web.filter.reactive.ServerWebExchangeContextFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.app.infra.webfilter.LocaleChangeWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ org.springframework.web.filter.reactive.UrlHandlerFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ run.halo.app.theme.UserLocaleRequestAttributeWriteFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ HTTP GET "/archives/d06540f2" [ExceptionHandlingWebHandler]
Original Stack Trace:
		at reactor.core.Exceptions.failWithRejected(Exceptions.java:285) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.Operators.onRejectedExecution(Operators.java:1076) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.requestUpstream(FluxSubscribeOn.java:142) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.request(FluxSubscribeOn.java:175) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:138) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxWindow$WindowExactSubscriber.request(FluxWindow.java:225) ~[reactor-core-3.7.11.jar:3.7.11]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.request(ChannelSendOperator.java:300) ~[spring-web-6.2.11.jar:6.2.11]
		at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:236) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.7.11.jar:3.7.11]
		at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscribe(ChannelSendOperator.java:363) ~[spring-web-6.2.11.jar:6.2.11]
		at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:71) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.Flux.subscribe(Flux.java:8891) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102) ~[reactor-netty-core-1.2.10.jar:1.2.10]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) ~[reactor-core-3.7.11.jar:3.7.11]
		at reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:196) ~[reactor-netty-core-1.2.10.jar:1.2.10]
		at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:603) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:570) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:505) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:649) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:638) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:118) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:748) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:303) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:383) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.AbstractEpollChannel.doWriteBytes(AbstractEpollChannel.java:364) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytes(AbstractEpollStreamChannel.java:262) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteSingle(AbstractEpollStreamChannel.java:473) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:431) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:929) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0(AbstractEpollChannel.java:557) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:893) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1319) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at reactor.netty.http.server.HttpTrafficHandler.flush(HttpTrafficHandler.java:352) ~[reactor-netty-http-1.2.10.jar:1.2.10]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:957) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1263) ~[netty-transport-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405) ~[netty-transport-classes-epoll-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.127.Final.jar:4.1.127.Final]
		at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: reactor.core.Exceptions$StaticRejectedExecutionException: Scheduler unavailable

附加信息

ITDog测试截图 访问失败截图

halo导出日志-halo-log-2025-10-13 13_47.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions