[Mono-list] WCF via TCP is frightfully slow

mauzik mauzik at centrum.cz
Mon Sep 30 18:08:31 UTC 2013


Hi, I did not give up use WCF on project. I tried profile application with
1000 receive requests and I have this part of result:

Method call summary
Total(ms) Self(ms)      Calls Method name
  167910       53       2000
System.ServiceModel.Channels.NetTcp.TcpDuplexSessionChannel:TryReceive
(System.TimeSpan,System.ServiceModel.Channels.Message&)
  132676        0          1 (wrapper runtime-invoke)
<Module>:runtime_invoke_void_object (object,intptr,intptr,intptr)
  132676        8          1 Client.Program:Main (string[])
  131651       18       1002 (wrapper managed-to-native)
object:__icall_wrapper_mono_remoting_wrapper (intptr,intptr)
  131646        1       1000 (wrapper remoting-invoke)
Remote.Service.IPersonService:GetPerson ()
  131632        1       1002 (wrapper runtime-invoke)
<Module>:runtime_invoke_object_object_object_intptr&_intptr&
(object,intptr,intptr,intptr)
  131631       12       1002
System.Runtime.Remoting.Proxies.RealProxy:PrivateInvoke
(System.Runtime.Remoting.Proxies.RealProxy,System.Runtime.Remoting.Messaging.IMessage,System.Exception&,object[]&)
  131468        2       1002 System.ServiceModel.ClientRealProxy:Invoke
(System.Runtime.Remoting.Messaging.IMessage)
  131466       18       1002 System.ServiceModel.ClientRealProxy:DoInvoke
(System.Runtime.Remoting.Messaging.IMessage)
  131313        1       1000
System.ServiceModel.MonoInternal.ClientRuntimeChannel:Process
(System.Reflection.MethodBase,string,object[])
  131312       12       1000
System.ServiceModel.MonoInternal.ClientRuntimeChannel:DoProcess
(System.Reflection.MethodBase,string,object[])
  131183       10       1000
System.ServiceModel.MonoInternal.ClientRuntimeChannel:Request
(System.ServiceModel.Description.OperationDescription,object[])
  116290        7       1000 (wrapper runtime-invoke)
<Module>:runtime_invoke_bool__this___TimeSpan_intptr&
(object,intptr,intptr,intptr)
  100804       17       2000 unknown method 0x9d5c97c
  100786   100786       2000 unknown method 0x9d5c9e4
   70224        7       6000
System.ServiceModel.Channels.MessageHeader:CreateHeader
(string,string,object,bool)
   70216        6       6000
System.ServiceModel.Channels.MessageHeader:CreateHeader
(string,string,object,bool,string)
   70210       14       6000
System.ServiceModel.Channels.MessageHeader:CreateHeader
(string,string,object,bool,string,bool)
   70136        7       6000
System.Runtime.Serialization.DataContractSerializer:.ctor (System.Type)
   70128       37       6000
System.Runtime.Serialization.DataContractSerializer:.ctor
(System.Type,System.Collections.Generic.IEnumerable`1<System.Type>)
   69490       35       7002
System.Runtime.Serialization.DataContractSerializer:PopulateTypes
(System.Collections.Generic.IEnumerable`1<System.Type>)
   69296       22       7002
System.Runtime.Serialization.DataContractSerializer:RegisterTypeAsKnown
(System.Type)
   68976        5       3000
System.ServiceModel.Channels.MessageHeader:CreateHeader
(string,string,object)
   68544       50      25797 System.Collections.ObjectModel.Collection`1:Add
(T)
   68533       22       1000
System.ServiceModel.MonoInternal.ClientRuntimeChannel:CreateRequest
(System.ServiceModel.Dispatcher.ClientOperation,object[])
   68475       38      25008
System.Runtime.Serialization.KnownTypeCollection:InsertItem
(int,System.Type)
   67898        6       3002
System.Runtime.Serialization.KnownTypeCollection:TryRegister (System.Type)
   67867       21       3002
System.Runtime.Serialization.KnownTypeCollection:DoTryRegister (System.Type)
   66993       29       1999
System.ServiceModel.Channels.NetTcp.TcpBinaryFrameManager:ReadSizedMessage
()
   65232       13       6008 System.IO.Stream:ReadByte ()
   65202       15       8008 System.Net.Sockets.NetworkStream:Read
(byte[],int,int)
   65181       14       8008 System.Net.Sockets.Socket:Receive
(byte[],int,int,System.Net.Sockets.SocketFlags)
   65161        9       8008 System.Net.Sockets.Socket:Receive_nochecks
(byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.Sockets.SocketError&)
   65151    65151       8008 (wrapper managed-to-native)
System.Net.Sockets.Socket:Receive_internal
(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,int&)
   61898        2       1000
System.ServiceModel.Channels.MessageHeaders:set_ReplyTo
(System.ServiceModel.EndpointAddress)

It is only interesting part of whole result. I do not understand why is
there unknown method (unknown method 0x9d5c9e4). This method consumes 100786
ms which is significant part of the total run of the application. Other
method with high time consumption is
ystem.Net.Sockets.Socket:Receive_internal
(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,int&). In my opinion
unknown method 0x9d5c9e4 is method from external shared library.

Does anyone know what could be the problem and how to solve this performance
issue? 



--
View this message in context: http://mono.1490590.n4.nabble.com/WCF-via-TCP-is-frightfully-slow-tp4660946p4661001.html
Sent from the Mono - General mailing list archive at Nabble.com.


More information about the Mono-list mailing list