wdinghua commented on issue #11524:
URL: https://github.com/apache/dubbo/issues/11524#issuecomment-1436556267

   > 这个问题是不是通过 3.2 的线程池隔离方案来解好些
   
   能否在3.0和3.1版本修复一下这个问题,补充一些信息:
   1. provider 在受理 consumer 的调用请求时,获取 ExecutorService 时,使用的是构造 ChannelHandler 
时传入的 url ,该url是 StandardMetadataServiceURLBuilder 
生成的,而StandardMetadataServiceURLBuilder生成url时定死了thread pool的相关参数
   
   代码截图
   <img width="854" alt="image" 
src="https://user-images.githubusercontent.com/17840144/220053698-30964ef1-7322-4391-b207-d817987e738d.png";>
   <img width="721" alt="image" 
src="https://user-images.githubusercontent.com/17840144/220053954-14e9df5c-7446-44b4-95bb-a62e8701e9b1.png";>
   <img width="916" alt="image" 
src="https://user-images.githubusercontent.com/17840144/220054256-dd478199-0381-4c75-bb52-5875036a9b41.png";>
   
   调用证明:
   provider 在受理 processAudioUpdate4Cache 调用时,使用 MessageOnlyChannelHandler 
受理请求,MessageOnlyChannelHandler 初始化的 url 是 StandardMetadataServiceURLBuilder 
生成的(url中参数为:threadpool=cached&threads=100)
   > [arthas@7364]$ tt -i 1226 
    INDEX          1226                                                         
                                                                                
                                                                 
    GMT-CREATE     2023-02-20 15:52:21                                          
                                                                                
                                                                 
    COST(ms)       0.014597                                                     
                                                                                
                                                                 
    OBJECT         0x30779ea6                                                   
                                                                                
                                                                 
    CLASS          
org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyChannelHandler
                                                                                
                                              
    METHOD         received                                                     
                                                                                
                                                                 
    IS-RETURN      true                                                         
                                                                                
                                                                 
    IS-EXCEPTION   false                                                        
                                                                                
                                                                 
    PARAMETERS[0]  @NettyChannel[                                               
                                                                                
                                                                 
                       
logger=@FailsafeErrorTypeAwareLogger[org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger@374e1a30],
                                                                                
       
                       CHANNEL_MAP=@ConcurrentHashMap[isEmpty=false;size=12],   
                                                                                
                                                                 
                       channel=@NioSocketChannel[[id: 0x1679b9a9, 
L:/xx.xx.xx.152:9034 - R:/xx.xx.xx.183:25492]],                                 
                                                                               
                       attributes=@ConcurrentHashMap[isEmpty=false;size=3],     
                                                                                
                                                                 
                       active=@AtomicBoolean[true],                             
                                                                                
                                                                 
                       
handler=@NettyServer[org.apache.dubbo.remoting.transport.netty4.NettyServer@2c827a42],
                                                                                
                                    
                       
url=@ServiceConfigURL[dubbo://xx.xx.xx.152:9034/org.apache.dubbo.metadata.MetadataService?accepts=1500&accesslog=false&anyhost=true&application=xxxxxx&background=false&bind.ip=xx.xx.xx.1
 
                   
52&bind.port=9034&channel.readonly.sent=true&client=netty4&codec=dubbo&connections=1&corethreads=2&delay=0&deprecated=false&dispatcher=message&dubbo=2.0.2&dynamic=true&executes=100&generic=false&getAndList
 
                   
enInstanceMetadata.1.callback=true&getAndListenInstanceMetadata.return=true&getAndListenInstanceMetadata.sent=true&group=xxxxxx&heartbeat=60000&interface=org.apache.dubbo.metadata.MetadataSe
 
                   
rvice&methods=exportInstanceMetadata,getAndListenInstanceMetadata,getExportedServiceURLs,getExportedURLs,getExportedURLs,getExportedURLs,getExportedURLs,getExportedURLs,getInstanceMetadataChangedListenerMa
 
                   
p,getMetadataInfo,getMetadataInfos,getMetadataURL,getServiceDefinition,getServiceDefinition,getSubscribedURLs,isMetadataService,serviceName,toSortedStrings,toSortedStrings,version&pid=7364&qos.accept.forei
 
                   
gn.ip=false&qos.enable=true&qos.port=20034&register=false&release=3.1.6&revision=3.1.6&rootPath=/dubbo-build&server=netty4&side=provider&threadname=protocol_thread-xx.xx.xx.152:9034&threadpool=cached&threa
 
                   
ds=100&timestamp=1676875328236&transporter=netty4&version=1.0.0],               
                                                                                
                                              
                       closing=@Boolean[false],                                 
                                                                                
                                                                 
                       closed=@Boolean[false],                                  
                                                                                
                                                                 
                   ]                                                            
                                                                                
                                                                 
    PARAMETERS[1]  @Request[                                                    
                                                                                
                                                                 
                       INVOKE_ID=@AtomicLong[2219],                             
                                                                                
                                                                 
                       mId=@Long[3153229],                                      
                                                                                
                                                                 
                       mVersion=@String[2.0.2],                                 
                                                                                
                                                                 
                       mTwoWay=@Boolean[true],                                  
                                                                                
                                                                 
                       mEvent=@Boolean[false],                                  
                                                                                
                                                                 
                       mBroken=@Boolean[false],                                 
                                                                                
                                                                 
                       mData=@DecodeableRpcInvocation[RpcInvocation 
[methodName=processAudioUpdate4Cache, parameterTypes=[class java.lang.String, 
class java.lang.String, class java.lang.String]]],                             
                   ]                                                            
                                                                                
                                                                 
    RETURN-OBJ     null                                                         
                                                                                
                                                                 
   Affect(row-cnt:1) cost in 1 ms.
   
   [arthas@7364]$ tt -i 1226 -w target
   @MessageOnlyChannelHandler[
       
logger=@FailsafeErrorTypeAwareLogger[org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger@1047a48],
       
handler=@DecodeHandler[org.apache.dubbo.remoting.transport.DecodeHandler@50e9124f],
       
url=@ServiceConfigURL[dubbo://xx.xx.xx.152:9034/org.apache.dubbo.metadata.MetadataService?accepts=1500&accesslog=false&anyhost=true&application=xxxxxx&background=false&bind.ip=xx.xx.xx.152&bind.port=9034&channel.readonly.sent=true&client=netty4&codec=dubbo&connections=1&corethreads=2&delay=0&deprecated=false&dispatcher=message&dubbo=2.0.2&dynamic=true&executes=100&generic=false&getAndListenInstanceMetadata.1.callback=true&getAndListenInstanceMetadata.return=true&getAndListenInstanceMetadata.sent=true&group=xxxxxx&heartbeat=60000&interface=org.apache.dubbo.metadata.MetadataService&methods=exportInstanceMetadata,getAndListenInstanceMetadata,getExportedServiceURLs,getExportedURLs,getExportedURLs,getExportedURLs,getExportedURLs,getExportedURLs,getInstanceMetadataChangedListenerMap,getMetadataInfo,getMetadataInfos,getMetadataURL,getServiceDefinition,getServiceDefinition,getSubscribedURLs,isMetadataService,serviceName,toSortedStrings,toSortedStrings,version&pid=7364&qos.accept.forei
 
gn.ip=false&qos.enable=true&qos.port=20034&register=false&release=3.1.6&revision=3.1.6&rootPath=/dubbo-build&server=netty4&side=provider&threadname=protocol_thread&threadpool=cached&threads=100&timestamp=1676875328236&transporter=netty4&version=1.0.0],
   ]
   Affect(row-cnt:1) cost in 1 ms.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to