iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >mongo慢查询问题如何排查处理
  • 661
分享到

mongo慢查询问题如何排查处理

2023-06-29 13:06:41 661人浏览 薄情痞子
摘要

这篇文章主要介绍了monGo慢查询问题如何排查处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mongo慢查询问题如何排查处理文章都会有所收获,下面我们一起来看看吧。一、简单介绍mongo语句查询条件中出现n

这篇文章主要介绍了monGo慢查询问题如何排查处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mongo慢查询问题如何排查处理文章都会有所收获,下面我们一起来看看吧。

一、简单介绍

mongo语句查询条件中出现null或空串,可能会导致索引失效,查询优化器无法选择正确的查询计划,出现慢查询引起服务异常

mongo查询的执行计划使用了LRU缓存,在很多种情况下会失效,导致重新选择执行计划并缓存,供后续同类查询直接使用;

服务开始时一直运行正常,当执行计划失效后,恰好出现null值的查询导致选择了错误的执行计划并缓存,后续正常的查询也会出现异常。

二、事件脉络

1、起因

用户中心收到业务方反馈,第三方登录注册出现频繁dubbo调用超时。

org.apache.dubbo.rpc.RpcException: Failed to invoke the method loginWithThird in the service weli.wORMhole.rpc.user.center.api.ILoginNeedPhoneService. Tried 1 times of the providers [10.65.5.0:11090] (1/4) from the reGIStry node1.zk.all.platform.wtc.hwhosts.com:2181 on the consumer 10.65.1.81 using the dubbo version 2.7.3-SNAPSHOT. Last error is: loginWithThird_2 failed and fallback failed.  at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:113)  at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:248)  at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:78)  at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:55)  at org.apache.dubbo.common.bytecode.proxy9.loginWithThird(proxy9.java)  at weli.peanut.user.service.LoginService.loginAndRegister(LoginService.java:684)  at weli.peanut.user.service.LoginService.loginByThirdPartyV2(LoginService.java:629)  at weli.peanut.WEB.controller.api.UserLoginController.lambda$loginByThirdPartyV2$0(UserLoginController.java:113)  at weli.peanut.common.controller.BaseController.resultForActionWithCat(BaseController.java:71)  at weli.peanut.web.controller.api.UserLoginController.loginByThirdPartyV2(UserLoginController.java:113)  at sun.reflect.GeneratedMethodAccessor2017.invoke(Unknown Source)  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  at java.lang.reflect.Method.invoke(Method.java:498)  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)  at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)  at javax.servlet.Http.httpservlet.service(HttpServlet.java:646)  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  at org.apache.Tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)  at org.apache.tomcat.util.net.NIOEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)  at java.lang.Thread.run(Thread.java:748)Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: loginWithThird_2 failed and fallback failed.  at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:818)  at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:793)  at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at com.netflix.hystrix.AbstractCommand$DeprecatedOnFallbackHookApplication$1.onError(AbstractCommand.java:1454)  at com.netflix.hystrix.AbstractCommand$FallbackHookApplication$1.onError(AbstractCommand.java:1379)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at rx.observers.Subscribers$5.onError(Subscribers.java:230)  at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44)  at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:142)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at rx.internal.operators.OperatorSubscribeOn$1$1.onError(OperatorSubscribeOn.java:59)  at rx.observers.Subscribers$5.onError(Subscribers.java:230)  at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)  at rx.observers.Subscribers$5.onError(Subscribers.java:230)  at com.netflix.hystrix.AbstractCommand$DeprecatedOnRunHookApplication$1.onError(AbstractCommand.java:1413)  at com.netflix.hystrix.AbstractCommand$ExecutionHookApplication$1.onError(AbstractCommand.java:1344)  at rx.observers.Subscribers$5.onError(Subscribers.java:230)  at rx.observers.Subscribers$5.onError(Subscribers.java:230)  at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44)  at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)  at rx.Observable.unsafeSubscribe(Observable.java:10151)  at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)  at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)  at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)  at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)  at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)  at java.util.concurrent.FutureTask.run(FutureTask.java:266)  ... 3 moreCaused by: java.lang.RuntimeException: org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: loginWithThird, provider: dubbo://10.65.5.0:11090/weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService?anyhost=true&application=peanut-admin&bean.name=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService&lazy=false&loadbalance=leastactive&methods=logout,sendSms,loginWithVisitor,loginWithThird,loginWithPhone,loginWithThirdBindPhone&pid=1&register=true&register.ip=10.65.1.81&release=2.7.3-SNAPSHOT&remote.application=wormhole-api&retries=0&revision=1.1.11-SNAPSHOT&side=consumer&sticky=false&timeout=5000&timestamp=1647332146309, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-03-15 20:33:31.937, end time: 2022-03-15 20:33:36.968, client elapsed: 0 ms, server elapsed: 5031 ms, timeout: 5000 ms, request: Request [id=690506, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=loginWithThird, parameterTypes=[class weli.wormhole.rpc.user.center.model.LoginWithThirdRequest, class weli.wormhole.rpc.user.center.model.LoginCommonParam], arguments=[LoginWithThirdRequest(accessToken=54_y3n-YsttdKOklr_X-mbjRgKAKROLDKfx3PV23zAQHmBvmT3zVliFp9mWodHSUEcKgNnJGC4AP_bAOX-2ZSSsfCHfNM5wfjbJDyiQh-sCjFQ, openId=ofrsY6xraPjv9augA9L2kUIB0-Fk, unionId=null, code=null, type=WX, nickName=null, headImgurl=null, sex=null, skipPhoneBind=1), LoginCommonParam(channel=vivo, ip=null, verName=null, platform=null, deviceId=null, imei=null, app=peanut, subApp=peanut, dfId=DUE_59hD2L9BBgukNR3Jv2DjnW00iRtU8z0eRFVFXzU5aEQyTDlCQmd1a05SM0p2MkRqblcwMGlSdFU4ejBlc2h2, idfa=null, Mac=null, oaid=null, AndroidId=null)], attachments={path=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, version=0.0.0, timeout=5000}]], channel: /10.65.1.81:35450 -> /10.65.5.0:11090  at suishen.esb.hystrix.dubbo.DubboHystrixCommand.run(DubboHystrixCommand.java:93)  at suishen.esb.hystrix.dubbo.DubboHystrixCommand.run(DubboHystrixCommand.java:12)  at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:301)  at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:297)  at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)  ... 26 moreCaused by: org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: loginWithThird, provider: dubbo://10.65.5.0:11090/weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService?anyhost=true&application=peanut-admin&bean.name=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService&lazy=false&loadbalance=leastactive&methods=logout,sendSms,loginWithVisitor,loginWithThird,loginWithPhone,loginWithThirdBindPhone&pid=1&register=true&register.ip=10.65.1.81&release=2.7.3-SNAPSHOT&remote.application=wormhole-api&retries=0&revision=1.1.11-SNAPSHOT&side=consumer&sticky=false&timeout=5000&timestamp=1647332146309, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-03-15 20:33:31.937, end time: 2022-03-15 20:33:36.968, client elapsed: 0 ms, server elapsed: 5031 ms, timeout: 5000 ms, request: Request [id=690506, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=loginWithThird, parameterTypes=[class weli.wormhole.rpc.user.center.model.LoginWithThirdRequest, class weli.wormhole.rpc.user.center.model.LoginCommonParam], arguments=[LoginWithThirdRequest(accessToken=54_y3n-YsttdKOklr_X-mbjRgKAKROLDKfx3PV23zAQHmBvmT3zVliFp9mWodHSUEcKgNnJGC4AP_bAOX-2ZSSsfCHfNM5wfjbJDyiQh-sCjFQ, openId=ofrsY6xraPjv9augA9L2kUIB0-Fk, unionId=null, code=null, type=WX, nickName=null, headImgurl=null, sex=null, skipPhoneBind=1), LoginCommonParam(channel=vivo, ip=null, verName=null, platform=null, deviceId=null, imei=null, app=peanut, subApp=peanut, dfId=DUE_59hD2L9BBgukNR3Jv2DjnW00iRtU8z0eRFVFXzU5aEQyTDlCQmd1a05SM0p2MkRqblcwMGlSdFU4ejBlc2h2, idfa=null, mac=null, oaid=null, androidId=null)], attachments={path=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, version=0.0.0, timeout=5000}]], channel: /10.65.1.81:35450 -> /10.65.5.0:11090  at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:63)  at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78)  at com.alibaba.dubbo.rpc.Invoker$CompatibleInvoker.invoke(Invoker.java:55)  at suishen.esb.hystrix.dubbo.DubboHystrixCommand.run(DubboHystrixCommand.java:84)  ... 30 moreCaused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-03-15 20:33:31.937, end time: 2022-03-15 20:33:36.968, client elapsed: 0 ms, server elapsed: 5031 ms, timeout: 5000 ms, request: Request [id=690506, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=loginWithThird, parameterTypes=[class weli.wormhole.rpc.user.center.model.LoginWithThirdRequest, class weli.wormhole.rpc.user.center.model.LoginCommonParam], arguments=[LoginWithThirdRequest(accessToken=54_y3n-YsttdKOklr_X-mbjRgKAKROLDKfx3PV23zAQHmBvmT3zVliFp9mWodHSUEcKgNnJGC4AP_bAOX-2ZSSsfCHfNM5wfjbJDyiQh-sCjFQ, openId=ofrsY6xraPjv9augA9L2kUIB0-Fk, unionId=null, code=null, type=WX, nickName=null, headImgurl=null, sex=null, skipPhoneBind=1), LoginCommonParam(channel=vivo, ip=null, verName=null, platform=null, deviceId=null, imei=null, app=peanut, subApp=peanut, dfId=DUE_59hD2L9BBgukNR3Jv2DjnW00iRtU8z0eRFVFXzU5aEQyTDlCQmd1a05SM0p2MkRqblcwMGlSdFU4ejBlc2h2, idfa=null, mac=null, oaid=null, androidId=null)], attachments={path=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, version=0.0.0, timeout=5000}]], channel: /10.65.1.81:35450 -> /10.65.5.0:11090  at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)  at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)  at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:56)  ... 33 moreCaused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-03-15 20:33:31.937, end time: 2022-03-15 20:33:36.968, client elapsed: 0 ms, server elapsed: 5031 ms, timeout: 5000 ms, request: Request [id=690506, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=loginWithThird, parameterTypes=[class weli.wormhole.rpc.user.center.model.LoginWithThirdRequest, class weli.wormhole.rpc.user.center.model.LoginCommonParam], arguments=[LoginWithThirdRequest(accessToken=54_y3n-YsttdKOklr_X-mbjRgKAKROLDKfx3PV23zAQHmBvmT3zVliFp9mWodHSUEcKgNnJGC4AP_bAOX-2ZSSsfCHfNM5wfjbJDyiQh-sCjFQ, openId=ofrsY6xraPjv9augA9L2kUIB0-Fk, unionId=null, code=null, type=WX, nickName=null, headImgurl=null, sex=null, skipPhoneBind=1), LoginCommonParam(channel=vivo, ip=null, verName=null, platform=null, deviceId=null, imei=null, app=peanut, subApp=peanut, dfId=DUE_59hD2L9BBgukNR3Jv2DjnW00iRtU8z0eRFVFXzU5aEQyTDlCQmd1a05SM0p2MkRqblcwMGlSdFU4ejBlc2h2, idfa=null, mac=null, oaid=null, androidId=null)], attachments={path=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, interface=weli.wormhole.rpc.user.center.api.ILoginNeedPhoneService, version=0.0.0, timeout=5000}]], channel: /10.65.1.81:35450 -> /10.65.5.0:11090  at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:189)  at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:153)  at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.run(DefaultFuture.java:252)  at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648)  at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727)  at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449)  ... 1 more

2、排查处理

a、查询用户中心cat监控,确认用户中心是否收到请求且正常响应。

当前状态:

mongo慢查询问题如何排查处理

正常状态:

mongo慢查询问题如何排查处理

对比结果:

用户中心已收到正常请求,排除客户端调用问题;

用户中心当前响应时间异常高出平常的响应时间,判断为用户中心内部业务处理出现问题。

b、查看kibana日志,发现无异常日志;

c、使用Arthas诊断工具,监控业务调用链各部分耗时情况;

mongo慢查询问题如何排查处理

定位原因为mongo查询慢导致整体业务处理超时。

d、分析mongo查询语句,查看索引情况

public User getUserByDfId(String dfId, String app) {        Criteria criteria = Criteria.where("userBindInfo.dfId").is(dfId).and("app").is(app).and("status").is(1);        return this.mongoTemplate.findOne(Query.query(criteria), User.class);}
db.getCollection('wormhole_user').getIndexes();[    {        "v" : 1,        "key" : {            "app" : 1        },        "name" : "app",        "ns" : "wormhole.wormhole_user",        "background" : true    },    {        "v" : 1,        "key" : {            "userBindInfo.dfId" : 1        },        "name" : "userBindInfo.dfId",        "ns" : "wormhole.wormhole_user",        "background" : true    },    ... (其余不关注索引已删除)]

“userBindInfo.dfId”字段存在索引,查询语句也无明显异常。

e、查看华为云后台mongo慢日志

{    "op": "query",    "ns": "wormhole.wormhole_user",    "command": {        "find": "wormhole_user",        "filter": {            "userBindInfo.dfId": "DUQmN3QLpLRwC8PNe1joT_9SDRrzazT4cUc5RFVRbU4zUUxwTFJ3QzhQtmUxam9UXzlTRFJyemF6VDRjVWM1c2h2",            "app": "maybe",            "status": 1        },        "ntoreturn": -1    },    "keysExamined": 1870039,    "docsExamined": 1870039,    "cursorExhausted": true,    "numYield": 14836,    "nreturned": 0,    "locks": {        "Global": {            "acquireCount": {                "r": 14837            }        },        "Database": {            "acquireCount": {                "r": 14837            }        },        "Collection": {            "acquireCount": {                "r": 14837            }        }    },    "responseLength": 36,    "millis": 14545,    "planSummary": "IXSCAN { app: 1 }",    "execStats": {        "stage": "CACHED_PLAN",        "nReturned": 0,        "executionTimeMillisEstimate": 14552,        "works": 1,        "advanced": 0,        "needTime": 0,        "needYield": 0,        "saveState": 14836,        "restoreState": 14836,        "isEOF": 1,        "invalidates": 0,        "inputStage": {            "stage": "LIMIT",            "nReturned": 0,            "executionTimeMillisEstimate": 14145,            "works": 1870040,            "advanced": 0,            "needTime": 1870039,            "needYield": 0,            "saveState": 14836,            "restoreState": 14836,            "isEOF": 1,            "invalidates": 0,            "limitAmount": 1,            "inputStage": {                "stage": "FETCH",                "filter": {                    "$and": [                        {                            "status": {                                "$eq": 1                            }                        },                        {                            "userBindInfo.dfId": {                                "$eq": "DUQmN3QLpLRwC8PNe1joT_9SDRrzazT4cUc5RFVRbU4zUUxwTFJ3QzhQTmUxam9UXzlTRFJyemF6VDRjVWM1c2h2"                            }                        }                    ]                },                "nReturned": 0,                "executionTimeMillisEstimate": 14117,                "works": 1870040,                "advanced": 0,                "needTime": 1870039,                "needYield": 0,                "saveState": 14836,                "restoreState": 14836,                "isEOF": 1,                "invalidates": 0,                "docsExamined": 1870039,                "alreadyHasObj": 0,                "inputStage": {                    "stage": "IXSCAN",                    "nReturned": 1870039,                    "executionTimeMillisEstimate": 931,                    "works": 1870040,                    "advanced": 1870039,                    "needTime": 0,                    "needYield": 0,                    "saveState": 14836,                    "restoreState": 14836,                    "isEOF": 1,                    "invalidates": 0,                    "keyPattern": {                        "app": 1                    },                    "indexName": "app",                    "isMultiKey": false,                    "multiKeyPaths": {                        "app": []                    },                    "isUnique": false,                    "isSparse": false,                    "isPartial": false,                    "indexVersion": 1,                    "direction": "forward",                    "indexBounds": {                        "app": [                            "["maybe", "maybe"]"                        ]                    },                    "keysExamined": 1870039,                    "seeks": 1,                    "dupsTested": 0,                    "dupsDropped": 0,                    "seenInvalidated": 0                }            }        }    },    "ts": {        "$date": 1647359086553    },    "client": "10.65.5.0",    "allUsers": [        {            "user": "mongosiud",            "db": "wormhole"        }    ],    "user": "mongosiud@wormhole"}

通过慢日志发现,mongo并未使用“userBindInfo.dfId”作为索引查询条件,而是使用了“app”作为索引查询条件。

初步认为索引匹配度不够,mongo没正确使用索引。

f、新增联合索引,提高索引匹配度,查询时间恢复正常,接口恢复正常。

db.getCollection("wormhole_user").createIndex({    "userBindInfo.dfId": 1,    "app": 1,    "status": 1 }, {    name: "idx_user_app_userBindInfo.dfId",    background: true});

3、问题分析

a、explain()语句分析

db.getCollection('wormhole_user').find({"userBindInfo.dfId": "DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2", "app": "maybe", "status": 1}).explain();{    "queryPlanner" : {        "plannerVersion" : 1,        "namespace" : "wormhole.wormhole_user",        "indexFilterSet" : false,        "parsedQuery" : {            "$and" : [                 {                    "app" : {                        "$eq" : "maybe"                    }                },                 {                    "status" : {                        "$eq" : 1.0                    }                },                 {                    "userBindInfo.dfId" : {                        "$eq" : "DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2"                    }                }            ]        },        "winningPlan" : {            "stage" : "FETCH",            "filter" : {                "$and" : [                     {                        "app" : {                            "$eq" : "maybe"                        }                    },                     {                        "status" : {                            "$eq" : 1.0                        }                    }                ]            },            "inputStage" : {                "stage" : "IXSCAN",                "keyPattern" : {                    "userBindInfo.dfId" : 1                },                "indexName" : "userBindInfo.dfId",                "isMultiKey" : false,                "multiKeyPaths" : {                    "userBindInfo.dfId" : []                },                "isUnique" : false,                "isSparse" : false,                "isPartial" : false,                "indexVersion" : 1,                "direction" : "forward",                "indexBounds" : {                    "userBindInfo.dfId" : [                         "[\"DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2\", \"DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2\"]"                    ]                }            }        },        "rejectedPlans" : [             {                "stage" : "FETCH",                "filter" : {                    "$and" : [                         {                            "status" : {                                "$eq" : 1.0                            }                        },                         {                            "userBindInfo.dfId" : {                                "$eq" : "DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2"                            }                        }                    ]                },                "inputStage" : {                    "stage" : "IXSCAN",                    "keyPattern" : {                        "app" : 1                    },                    "indexName" : "app",                    "isMultiKey" : false,                    "multiKeyPaths" : {                        "app" : []                    },                    "isUnique" : false,                    "isSparse" : false,                    "isPartial" : false,                    "indexVersion" : 1,                    "direction" : "forward",                    "indexBounds" : {                        "app" : [                             "[\"maybe\", \"maybe\"]"                        ]                    }                }            },             {                "stage" : "FETCH",                "filter" : {                    "$and" : [                         {                            "app" : {                                "$eq" : "maybe"                            }                        },                         {                            "userBindInfo.dfId" : {                                "$eq" : "DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2"                            }                        },                         {                            "status" : {                                "$eq" : 1.0                            }                        }                    ]                },                "inputStage" : {                    "stage" : "AND_SORTED",                    "inputStages" : [                         {                            "stage" : "IXSCAN",                            "keyPattern" : {                                "app" : 1                            },                            "indexName" : "app",                            "isMultiKey" : false,                            "multiKeyPaths" : {                                "app" : []                            },                            "isUnique" : false,                            "isSparse" : false,                            "isPartial" : false,                            "indexVersion" : 1,                            "direction" : "forward",                            "indexBounds" : {                                "app" : [                                     "[\"maybe\", \"maybe\"]"                                ]                            }                        },                         {                            "stage" : "IXSCAN",                            "keyPattern" : {                                "userBindInfo.dfId" : 1                            },                            "indexName" : "userBindInfo.dfId",                            "isMultiKey" : false,                            "multiKeyPaths" : {                                "userBindInfo.dfId" : []                            },                            "isUnique" : false,                            "isSparse" : false,                            "isPartial" : false,                            "indexVersion" : 1,                            "direction" : "forward",                            "indexBounds" : {                                "userBindInfo.dfId" : [                                     "[\"DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2\", \"DUqTmV8lQcInjzWtuyJuAntkbRi5_YZ3yHd9RFVxVG1WOGxRY0luanpXdHV5SnVBbnRrYlJpNV9ZWjN5SGQ5c2h2\"]"                                ]                            }                        }                    ]                }            }        ]    },    "serverInfo" : {        "host" : "host-192-168-10-163",        "port" : 27017,        "version" : "4.0.3",        "gitVersion" : "0ead8608f9d151a199b05117bcc79ccb8d5f44a0"    },    "ok" : 1.0,    "operationTime" : Timestamp(1647486920, 2),    "$clusterTime" : {        "clusterTime" : Timestamp(1647486920, 2),        "signature" : {            "hash" : { "$binary" : "ylTAtLK6mVpNwDt7PTGwNST/9z4=", "$type" : "00" },            "keyId" : NumberLong(7031512438860152835)        }    }}
  • 发现mongo执行计划选择正确,这正好解释了服务在之前很长的一段时间内都是正常的原因;

  • mongo慢日志中的执行计划却选择错误,表明有什么原因导致了mongo执行计划的选择发生了变更。

b、文档查询

  • MongoDB 查询优化器会缓存最有效的查询计划,关联的计划缓存条目会用于具有相同查询形状的后续查询;

  • 计划缓存会出现刷新:

    • mongoDB重启;

    • 索引或者集合的删除添加更新等操作;

    • 最近最少使用 (LRU) 缓存替换机制清除最近最少访问的缓存条目。

结论:之前使用了计划缓存服务正常,到了某一时刻,计划缓存失效,MongoDB重新选择计划,此时选择了错误的计划并缓存,导致后续查询全部出现问题

c、查询首次出现的慢日志

{    "op":"query",    "ns":"wormhole.wormhole_user",    "command":{        "find":"wormhole_user",        "filter":{            "userBindInfo.dfId":null,            "app":"cybercat",            "status":1        },        "ntoreturn":-1    },    "keysExamined":872550,    "docsExamined":872550,    "fromMultiPlanner":true,    "replanned":true,    "cursorExhausted":true,    "numYield":13785,    "nreturned":0,    "locks":{        "Global":{            "acquireCount":{                "r":13786            }        },        "Database":{            "acquireCount":{                "r":13786            }        },        "Collection":{            "acquireCount":{                "r":13786            }        }    },    "responseLength":36,    "millis":27864,    "planSummary":"IXSCAN { app: 1 }",    "execStats":{        "stage":"LIMIT",        "nReturned":0,        "executionTimeMillisEstimate":26216,        "works":872551,        "advanced":0,        "needTime":872550,        "needYield":0,        "saveState":13785,        "restoreState":13785,        "isEOF":1,        "invalidates":0,        "limitAmount":1,        "inputStage":{            "stage":"FETCH",            "filter":{                "$and":[                    {                        "status":{                            "$eq":1                        }                    },                    {                        "userBindInfo.dfId":{                            "$eq":null                        }                    }                ]            },            "nReturned":0,            "executionTimeMillisEstimate":26164,            "works":872551,            "advanced":0,            "needTime":872550,            "needYield":0,            "saveState":13785,            "restoreState":13785,            "isEOF":1,            "invalidates":0,            "docsExamined":872550,            "alreadyHasObj":0,            "inputStage":{                "stage":"IXSCAN",                "nReturned":872550,                "executionTimeMillisEstimate":249,                "works":872551,                "advanced":872550,                "needTime":0,                "needYield":0,                "saveState":13785,                "restoreState":13785,                "isEOF":1,                "invalidates":0,                "keyPattern":{                    "app":1                },                "indexName":"app",                "isMultiKey":false,                "multiKeyPaths":{                    "app":[                    ]                },                "isUnique":false,                "isSparse":false,                "isPartial":false,                "indexVersion":1,                "direction":"forward",                "indexBounds":{                    "app":["["cybercat", "cybercat"]"                    ]                },                "keysExamined":872550,                "seeks":1,                "dupsTested":0,                "dupsDropped":0,                "seenInvalidated":0            }        }    },    "ts":{        "$date":1647309521700    },    "client":"10.65.1.25",    "allUsers":[        {            "user":"mongosiud",            "db":"wormhole"        }    ],    "user":"mongosiud@wormhole"}

发现查询条件中出现了null值,本地再次分析:

db.getCollection('wormhole_user').find({"userBindInfo.dfId": null, "app": "maybe", "status": 1}).explain();{    "queryPlanner" : {        "plannerVersion" : 1,        "namespace" : "wormhole.wormhole_user",        "indexFilterSet" : false,        "parsedQuery" : {            "$and" : [                 {                    "app" : {                        "$eq" : "maybe"                    }                },                 {                    "status" : {                        "$eq" : 1.0                    }                },                 {                    "userBindInfo.dfId" : {                        "$eq" : null                    }                }            ]        },        "winningPlan" : {            "stage" : "FETCH",            "filter" : {                "$and" : [                     {                        "status" : {                            "$eq" : 1.0                        }                    },                     {                        "userBindInfo.dfId" : {                            "$eq" : null                        }                    }                ]            },            "inputStage" : {                "stage" : "IXSCAN",                "keyPattern" : {                    "app" : 1                },                "indexName" : "app",                "isMultiKey" : false,                "multiKeyPaths" : {                    "app" : []                },                "isUnique" : false,                "isSparse" : false,                "isPartial" : false,                "indexVersion" : 1,                "direction" : "forward",                "indexBounds" : {                    "app" : [                         "[\"maybe\", \"maybe\"]"                    ]                }            }        },        "rejectedPlans" : [             {                "stage" : "FETCH",                "filter" : {                    "$and" : [                         {                            "userBindInfo.dfId" : {                                "$eq" : null                            }                        },                         {                            "app" : {                                "$eq" : "maybe"                            }                        },                         {                            "status" : {                                "$eq" : 1.0                            }                        }                    ]                },                "inputStage" : {                    "stage" : "IXSCAN",                    "keyPattern" : {                        "userBindInfo.dfId" : 1                    },                    "indexName" : "userBindInfo.dfId",                    "isMultiKey" : false,                    "multiKeyPaths" : {                        "userBindInfo.dfId" : []                    },                    "isUnique" : false,                    "isSparse" : false,                    "isPartial" : false,                    "indexVersion" : 1,                    "direction" : "forward",                    "indexBounds" : {                        "userBindInfo.dfId" : [                             "[undefined, undefined]",                             "[null, null]"                        ]                    }                }            }        ]    },    "serverInfo" : {        "host" : "host-192-168-10-163",        "port" : 27017,        "version" : "4.0.3",        "gitVersion" : "0ead8608f9d151a199b05117bcc79ccb8d5f44a0"    },    "ok" : 1.0,    "operationTime" : Timestamp(1647489666, 1),    "$clusterTime" : {        "clusterTime" : Timestamp(1647489666, 1),        "signature" : {            "hash" : { "$binary" : "1KJI3aoz2QbOwTKlbkNl9SmWLzw=", "$type" : "00" },            "keyId" : NumberLong(7031512438860152835)        }    }}

结果与线上表现一致

4、回顾

紧急处理时,直接创建了一个新的索引,导致了计划缓存失效,重新选择计划并缓存,所以服务恢复了正常。

关于“mongo慢查询问题如何排查处理”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mongo慢查询问题如何排查处理”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: mongo慢查询问题如何排查处理

本文链接: https://www.lsjlt.com/news/325083.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongo慢查询问题如何排查处理
    这篇文章主要介绍了mongo慢查询问题如何排查处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mongo慢查询问题如何排查处理文章都会有所收获,下面我们一起来看看吧。一、简单介绍mongo语句查询条件中出现n...
    99+
    2023-06-29
  • 一次线上mongo慢查询问题排查处理记录
    目录一、简单介绍二、事件脉络1、起因2、排查处理3、问题分析4、回顾三、总结一、简单介绍 mongo语句查询条件中出现null或空串,可能会导致索引失效,查询优化器无法选择正确的查询...
    99+
    2024-04-02
  • sql运行缓慢问题如何排查
    要排查SQL运行缓慢的问题,可以尝试以下几个步骤:1. 检查查询语句:确保查询语句写得正确且优化良好。可以对查询进行优化,例如使用合...
    99+
    2023-10-21
    sql
  • mongo如何查询慢日志以及创建索引
    这篇文章给大家分享的是有关mongo如何查询慢日志以及创建索引的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.查看mongodb慢日志是否开起use LogDB;db.getP...
    99+
    2024-04-02
  • 如何解决mysql大表查询慢的问题
    小编给大家分享一下如何解决mysql大表查询慢的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql大表查询慢的优化方法:1、合理建立索引,通常查询利用到索引比不用索引更快;2、对关键...
    99+
    2024-04-02
  • MySQL中如何解决慢查询和性能问题
    解决MySQL中慢查询和性能问题的方法有很多,以下是一些常见的解决方案: 使用合适的索引:索引能够加快数据的检索速度,提高查询性...
    99+
    2024-03-06
    MySQL
  • MySQL慢查询优化解决问题
    目录1.  MySQL慢查询介绍2.发现问题(主动/被动)3.找到原因-对症下药1.  MySQL慢查询介绍   MySQL的慢查询日志是MySQL提供...
    99+
    2024-04-02
  • 如何解决mybatis-plus查询耗时慢的问题
    这篇文章主要介绍如何解决mybatis-plus查询耗时慢的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mybatis-plus 查询耗时慢1、现象查出30000多条id然后用EntityWrapper&nbs...
    99+
    2023-06-20
  • MYSQL的IN查询效率慢的问题
    最近项目的老代码又出问题了,mysql的in查询一次查询了5万个数据,cpu一下飙升到100%,这条查询sql也运行的近600s,那么是什么原因导致mysql的in查询效率如此之低,并且没有走索引呢?...
    99+
    2023-09-10
    mysql 数据库
  • maven依赖问题如何排查
    在排查Maven依赖问题时,可以尝试以下几个步骤:1. 检查pom.xml文件:首先检查项目的pom.xml文件,确保依赖项正确地被...
    99+
    2023-09-17
    maven
  • Mybatis-plus分页查询不生效之问题排查
    Mybatis-plus分页查询不生效之问题排查 一、问题描述二、分析步骤三、解决方案四、总结 一、问题描述 在查询的时候,发现点击后台的分页器数字,第2页时候,数据还是和第1页的一致。就看后台的数据库打印语句,如下所示。点...
    99+
    2023-08-23
    mybatis java mysql
  • linux中如何排查Java问题
    小编给大家分享一下linux中如何排查Java问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux命令类tail最常用的tail -fgrepawk1 基...
    99+
    2023-06-16
  • 如何解决mysql中count查询速度很慢的问题
    这篇文章主要介绍了如何解决mysql中count查询速度很慢的问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL 大表的count()...
    99+
    2024-04-02
  • 解决mybatis-plus 查询耗时慢的问题
    mybatis-plus 查询耗时慢 1、现象 查出30000多条id 然后用 EntityWrapper ew = new EntityWrapper<>(); ...
    99+
    2024-04-02
  • mysql的慢查询日志如何查看
    要查看MySQL的慢查询日志,您可以按照以下步骤操作: 登录MySQL数据库服务器,可以通过命令行或者图形化工具进行登录。 ...
    99+
    2024-05-14
    mysql
  • Redis慢查询日志与监视器问题
    目录1、慢查询设置2、慢查询定位&处理3、监视器4、Redis监控平台总结我们都知道mysql有慢查询日志 Redis也有慢查询日志,可用于监视和优化查询 1、慢查询设置 在redis.conf中可以配置和慢...
    99+
    2022-12-22
    Redis慢查询 慢查询日志 Redis监视器
  • sql server卡慢问题定位与排查过程
    目录一、数据库服务器资源排查二、数据库sql性能排查2.1、查询哪些资源被阻塞了 和 堵进程2.2、查询spid/BlkBy 阻塞进程语句2.3、查看指定数据库的锁id进行2.4、杀进程三、查询sql语句执行时间和sql...
    99+
    2023-03-06
    sqlserver数据库卡慢分析 sqlserver数据库卡顿 sqlserver突然特别慢
  • slow query log如何进行查询慢查询语句
    slow query log如何进行查询慢查询语句,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。slow query log查询慢查询语句&n...
    99+
    2024-04-02
  • mysql慢查询如何开启
    本文小编为大家详细介绍“mysql慢查询如何开启”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql慢查询如何开启”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、什么是慢查询?在 MySQL 中,如果执行...
    99+
    2023-07-06
  • sql server卡慢问题定位与排查过程
    目录一、数据库服务器资源排查二、数据库sql性能排查2.1、查询哪些资源被阻塞了 和 堵进程2.2、查询spid/BlkBy 阻塞进程语句2.3、查看指定数据库的锁id进行2.4、杀...
    99+
    2023-03-06
    sqlserver数据库卡慢分析 sqlserver数据库卡顿 sqlserver突然特别慢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作