常见问题

创建日期:2024-06-21
更新日期:2024-12-05

1、登录系统,前端报错:Failed to execute 'setItem' on 'Storage': Setting the value of 'saber-menu' exceeded the quota。

按F12打开控制台,在应用选项卡,清空存储即可。

2、一些请求报400 Bad Request错误。

请求头超长导致的,首先在nginx里配置请求头大小client_header_buffer_size和large_client_header_buffers。

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    client_header_buffer_size 1024k;
    large_client_header_buffers 4 1024k;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

然后在nacos中,blade.yaml里配置请求头大小max-http-header-size。

#服务器配置
server:
  max-http-header-size: 100KB
  undertow:
    threads:
      # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
      io: 16
      # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
      worker: 400
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    buffer-size: 1024
    # 是否分配的直接内存
    direct-buffers: true
    accesslog:
      # 存放目录,默认为 logs
      dir: file:./log
      # 是否开启
      enabled: true
      pattern: '%a, REQUEST:%r, STATUS:%s(%{RESPONSE_REASON_PHRASE}), BYTESSENT:%b, TIME:%{time,yyyy-MM-dd HH:mm:ss.S}, USED:%Ts'
      # 文件前缀,默认为 access_log
      prefix: access.
      # 文件后缀,默认为 log
      suffix: log
      # 是否另起日志文件写 access log,默认为 true
      # 目前只能按照日期进行 rotate,一天一个日志文件
      rotate: true
      

3、一些请求报错:413 (Request Entity Too Large)。

在nacos中,blade.yaml里配置请求头大小max-http-header-size。

参考资料:https://github.com/spring-cloud/spring-cloud-gateway/issues/402

#服务器配置
server:
  max-http-header-size: 100KB
  undertow:
    threads:
      # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
      io: 16
      # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
      worker: 400
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    buffer-size: 1024
    # 是否分配的直接内存
    direct-buffers: true
    accesslog:
      # 存放目录,默认为 logs
      dir: file:./log
      # 是否开启
      enabled: true
      pattern: '%a, REQUEST:%r, STATUS:%s(%{RESPONSE_REASON_PHRASE}), BYTESSENT:%b, TIME:%{time,yyyy-MM-dd HH:mm:ss.S}, USED:%Ts'
      # 文件前缀,默认为 access_log
      prefix: access.
      # 文件后缀,默认为 log
      suffix: log
      # 是否另起日志文件写 access log,默认为 true
      # 目前只能按照日期进行 rotate,一天一个日志文件
      rotate: true
      

4、Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: io.undertow.server.handlers.form.MultiPartParserDefinition$FileTooLargeException: UT000054: The maximum size 268435456 for an individual file in a multipart request was exceeded。

修改配置:

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 1024MB
      max-request-size: 1024MB
      file-size-threshold: 1024MB

这时会报另一个错误:

java.io.IOException: UT010029: Stream is closed
        at io.undertow.servlet.spec.ServletInputStreamImpl.read(ServletInputStre
amImpl.java:169)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.fill(BufferedReader.java:161)
        at java.io.BufferedReader.readLine(BufferedReader.java:324)
        at java.io.BufferedReader.readLine(BufferedReader.java:389)

这是Java内存溢出导致的,见下个问题。

5、Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space。

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryE
rror: Java heap space
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at org.springblade.core.log.filter.LogTraceFilter.doFilter(LogTraceFilter.java:39)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springblade.core.boot.request.BladeRequestFilter.doFilter(BladeRequestFilter.java:58)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter
.java:97)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.jav
a:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociatio
nHandler.java:111)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCal
lHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.jav
a:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidenti
alityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.j
ava:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSess
ionHandler.java:77)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContext
AssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction
.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:390)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:836)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:3236)
        at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
        at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
        at org.springframework.util.StreamUtils.copy(StreamUtils.java:167)
        at org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:112)
        at org.springframework.util.FileCopyUtils.copyToByteArray(FileCopyUtils.java:152)
        at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile.getBytes(
StandardMultipartHttpServletRequest.java:246)
        at com.hylab.dap.threed.service.impl.TdFileServiceImpl.uploadFile(TdFileServiceImpl.java:158)
        at com.hylab.dap.threed.service.impl.TdFileServiceImpl$$FastClassBySpringCGLIB$$a4aeec36.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
        at com.hylab.dap.threed.service.impl.TdFileServiceImpl$$EnhancerBySpringCGLIB$$c4588f90.uploadFile(<generated>)

        at com.hylab.dap.threed.controller.TdModelController.upload(TdModelController.java:220)
        at com.hylab.dap.threed.controller.TdModelController$$FastClassBySpringCGLIB$$3be9ec25.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoi
nt.java:88)
        at org.springblade.core.log.aspect.RequestLogAspect.aroundApi(RequestLogAspect.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.j
ava:644)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

编辑 start-hylab-gis.cmd,改为

@echo off
@chcp 65001
title hylab-pomp-gis
cd D:\iES-POMP\jar && java -Xms1024m -Xmx1024m -jar -Dfile.encoding=utf-8 hylab-gis.jar --spring.profiles.active=dev --server.port=8069
pause

6、Failed to parse multipart servlet request; nested exception is java.lang.OutOfMemoryError: Java heap space。

解决方法:将-Xms和-Xmx调大即可。

@echo off
@chcp 65001
title hylab-pomp-gis
cd D:\iES-POMP\jar && java -Xms2048m -Xmx2048m -jar -Dfile.encoding=utf-8 hylab-gis.jar --spring.profiles.active=dev --server.port=8069
pause

7、blade-boot 2.9.0无法打包。

参考文档:https://sns.bladex.cn/q-10215.html

8、BladeRedis获取数据报错:Reading from a byte array threw an IOException (should never happen).

数据类的结构发生变化,保存的数据和数据类字段对应不上。移除Redis里对应的键即可。

9、org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded。

编辑 start-hylab-gis.cmd,改为

@echo off
@chcp 65001
title hylab-pomp-gis
cd D:\iES-POMP\jar && java -Xms1024m -Xmx1024m -jar -Dfile.encoding=utf-8 hylab-gis.jar --spring.profiles.active=dev --server.port=8069
pause

10、qyyadmin账号被锁定了。

删除以下redis缓存即可。

db0:000000:blade:user::blade:fail:qyyadmin

11、Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded。

增大启动时的堆空间。

@echo off
@chcp 65001
title hylab-pomp-device
cd D:\iES-POMP\jar && java -Xms256m -Xmx4096m -jar -Dfile.encoding=utf-8 pomp-device.jar --spring.profiles.active=dev --server.port=8099
pause