pagehelper / Mybatis-PageHelper

Mybatis通用分页插件
https://mybatis.io
MIT License
12.23k stars 3.13k forks source link

线上环境升级到6.1.0,服务器CPU直接99%以上,下不来,接口全部无响应 #789

Open Q3061932198 opened 11 months ago

Q3061932198 commented 11 months ago

是因为SQL解析超时的问题吗?框架还使用了mybatis-plus最新版3.5.4.1

降到6.0.0,恢复正常,如果是解析超时,我看错误日志也看不出来有任何问题,怎么看解析超时啊

abel533 commented 11 months ago

使用6.1.0的同时,使用加下面依赖试试(超时10秒):

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>sqlparser-timeout</artifactId>
    <version>6.1.0</version>
</dependency>

可以jstack看看线程在做什么,如果很多线程都停留在jsqlparser,就有可能是解析超时。

abel533 commented 11 months ago

如果超时的概率很高,就发个小版本默认加上超时。

Q3061932198 commented 6 months ago

使用6.1.0的同时,使用加下面依赖试试(超时10秒):

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>sqlparser-timeout</artifactId>
    <version>6.1.0</version>
</dependency>

可以jstack看看线程在做什么,如果很多线程都停留在jsqlparser,就有可能是解析超时。

这个sqlparser-timeout确定是默认10秒?我看代码怎么感觉是100秒啊? image 毫秒转换成秒,去掉末尾的三个0就是秒的吧?去掉三个0剩下的是100秒

mfkvfhpdx commented 5 months ago

我这也有这个问题 ,用地sqlparse 4.9,pagehlper6.10 某些sql会导致线程飙升,cpu到100% java.lang.Thread.State: RUNNABLE at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectNameWithoutValue_1844_5_120(CCJSqlParser.java:33149) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectName_1856_6_400(CCJSqlParser.java:32743) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectName_1856_5_165(CCJSqlParser.java:32751) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectNameExt_1886_7_600(CCJSqlParser.java:32575) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectNameExt_1886_5_346(CCJSqlParser.java:32589) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RelObjectNameList_1801_5_402(CCJSqlParser.java:33698) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_InternalFunction_5221_5_635(CCJSqlParser.java:31662) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Function_5123_11_474(CCJSqlParser.java:32004) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Function_5119_5_234(CCJSqlParser.java:32073) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4250_11_483(CCJSqlParser.java:35634) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4223_5_242(CCJSqlParser.java:35865) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseXor_4162_5_257(CCJSqlParser.java:36183) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_MultiplicativeExpression_4132_5_252(CCJSqlParser.java:36248) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AdditiveExpression_4108_5_249(CCJSqlParser.java:36283) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseAndOr_4076_5_244(CCJSqlParser.java:36342) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ConcatExpression_4053_5_185(CCJSqlParser.java:36398) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SimpleExpression_4024_5_202(CCJSqlParser.java:36482) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_198(CCJSqlParser.java:37723) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SQLCondition_3597_5_220(CCJSqlParser.java:37764) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_184(CCJSqlParser.java:38220) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3497_5_184(CCJSqlParser.java:38278) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3472_9_215(CCJSqlParser.java:38350) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_180(CCJSqlParser.java:38379) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3459_5_213(CCJSqlParser.java:38447) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_OrExpression_3437_5_212(CCJSqlParser.java:38461) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_XorExpression_3418_5_348(CCJSqlParser.java:38485) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Expression_3408_5_112(CCJSqlParser.java:38502) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_223(CCJSqlParser.java:36721) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComplexExpressionList_3912_5_235(CCJSqlParser.java:36737) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3858_9_237(CCJSqlParser.java:36842) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_219(CCJSqlParser.java:36853) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3856_5_201(CCJSqlParser.java:36865) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_229(CCJSqlParser.java:36570) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComparisonItem_3986_3_221(CCJSqlParser.java:36608) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RegularCondition_3531_5_219(CCJSqlParser.java:38064) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3499_9_408(CCJSqlParser.java:38226) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3497_5_184(CCJSqlParser.java:38276) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3460_9_423(CCJSqlParser.java:38430) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3459_5_213(CCJSqlParser.java:38441) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_178(CCJSqlParser.java:38455) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_OrExpression_3437_5_212(CCJSqlParser.java:38465) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_XorExpression_3418_5_348(CCJSqlParser.java:38485) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Expression_3408_5_112(CCJSqlParser.java:38502) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_223(CCJSqlParser.java:36721) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComplexExpressionList_3912_5_235(CCJSqlParser.java:36737) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3858_9_237(CCJSqlParser.java:36842) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_219(CCJSqlParser.java:36853) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3856_5_201(CCJSqlParser.java:36865) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4290_9_493(CCJSqlParser.java:35398) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4223_5_242(CCJSqlParser.java:35933) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseXor_4162_5_257(CCJSqlParser.java:36183) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_MultiplicativeExpression_4132_5_252(CCJSqlParser.java:36248) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AdditiveExpression_4108_5_249(CCJSqlParser.java:36283) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseAndOr_4076_5_244(CCJSqlParser.java:36342) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ConcatExpression_4053_5_185(CCJSqlParser.java:36398) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SimpleExpression_4024_5_202(CCJSqlParser.java:36482) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_198(CCJSqlParser.java:37723) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SQLCondition_3597_5_220(CCJSqlParser.java:37764) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_184(CCJSqlParser.java:38220) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3497_5_184(CCJSqlParser.java:38278) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3460_9_423(CCJSqlParser.java:38430) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AndExpression_3459_5_213(CCJSqlParser.java:38441) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_178(CCJSqlParser.java:38455) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_OrExpression_3437_5_212(CCJSqlParser.java:38465) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_XorExpression_3418_5_348(CCJSqlParser.java:38485) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Expression_3408_5_112(CCJSqlParser.java:38502) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_223(CCJSqlParser.java:36721) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComplexExpressionList_3912_5_235(CCJSqlParser.java:36737) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3858_9_237(CCJSqlParser.java:36842) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_219(CCJSqlParser.java:36853) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ParenthesedExpressionList_3856_5_201(CCJSqlParser.java:36865) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4290_9_493(CCJSqlParser.java:35398) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_4223_5_242(CCJSqlParser.java:35933) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseXor_4162_5_257(CCJSqlParser.java:36183) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_MultiplicativeExpression_4132_5_252(CCJSqlParser.java:36248) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AdditiveExpression_4108_5_249(CCJSqlParser.java:36283) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseAndOr_4076_5_244(CCJSqlParser.java:36342) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ConcatExpression_4053_5_185(CCJSqlParser.java:36398) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SimpleExpression_4024_5_202(CCJSqlParser.java:36482) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_228(CCJSqlParser.java:36576) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComparisonItem_3986_3_221(CCJSqlParser.java:36606) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RegularCondition_3531_5_219(CCJSqlParser.java:38064) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3499_9_408(CCJSqlParser.java:38226) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_3497_5_184(CCJSqlParser.java:38276) at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_181(CCJSqlParser.java:38304) at net.sf.jsqlparser.parser.CCJSqlParser.jj_rescan_token(CCJSqlParser.java:39811) at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:39597) at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:39427) at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:12475) at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:12431) at net.sf.jsqlparser.parser.CCJSqlParser.XorExpression(CCJSqlParser.java:12403) at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:12474) at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:12431) at net.sf.jsqlparser.parser.CCJSqlParser.XorExpression(CCJSqlParser.java:12403) at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:12542) at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:12421) at net.sf.jsqlparser.parser.CCJSqlParser.XorExpression(CCJSqlParser.java:12403) at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:12374) at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:11669) at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:8949) at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:8205) at net.sf.jsqlparser.parser.CCJSqlParser.SelectWithWithItems(CCJSqlParser.java:8178) at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:379) at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:296) at com.github.pagehelper.parser.SqlParser.lambda$static$0(SqlParser.java:45) at com.github.pagehelper.parser.SqlParser$$Lambda$554/452704300.parse(Unknown Source) at com.github.pagehelper.parser.SqlParserUtil.parse(SqlParserUtil.java:28) at com.github.pagehelper.parser.defaults.DefaultCountSqlParser.getSmartCountSql(DefaultCountSqlParser.java:74) at com.github.pagehelper.dialect.AbstractHelperDialect.getCountSql(AbstractHelperDialect.java:79) at com.github.pagehelper.PageHelper.getCountSql(PageHelper.java:111) at com.github.pagehelper.util.ExecutorUtil.executeAutoCount(ExecutorUtil.java:157) at com.github.pagehelper.PageInterceptor.count(PageInterceptor.java:244) at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:153)