Come dice il titolo, ho ottenuto un server WCF avere questo comportamento del servizio definito:WCF aumento l'utilizzo della CPU del 25% per ogni cliente
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
I' utilizzando una named pipe vincolante ei miei clienti si connette in questo modo:
NetNamedPipeBinding binding = new NetNamedPipeBinding();
const int maxValue = 0x40000000; // 1GB
binding.MaxBufferSize = maxValue;
binding.MaxReceivedMessageSize = maxValue;
binding.ReaderQuotas.MaxArrayLength = maxValue;
binding.ReaderQuotas.MaxBytesPerRead = maxValue;
binding.ReaderQuotas.MaxStringContentLength = maxValue;
// receive timeout acts like a general timeout
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
ChannelFactory<IDatabaseSession> pipeFactory = new ChannelFactory<IDatabaseSession>(binding, new EndpointAddress("net.pipe://localhost/DatabaseService"));
IDatabaseSession dbSession = pipeFactory.CreateChannel()
ogni cliente comincio esegue il codice di cui sopra, e per ogni cliente l'utilizzo della CPU aumenta del 25% (in realtà non per il cliente 5., ma a questo punto l'execteable servizio copre quasi un 100 % dell'intera capacità della CPU).
Quello che sto cercando è un tipo di risorsa (sito Web/elenco o solo la TUA conoscenza potente) che mi dice cosa effettivamente fa CreateChannel (riguardo ai problemi di allocazione delle risorse).
suggerimento: l'utilizzo della CPU aumenta anche se non viene effettivamente effettuata alcuna comunicazione, viene creato solo il canale.
Prevedo di avere 4 core e qualcosa che gira in un circuito chiuso. – tzerb
Impara a usare il tuo debugger e/o il profiler della CPU. –
in realtà hai ragione tzerb. 4 core e alcuni, non trovati finora, minuscolo loop ... – inva