RavenDB largo tiempo de respuesta para la pregunta, mientras que se procesa en el servidor muy rápido
Pregunta
Raven.Server comenzó y enganchan al puerto 8022. Me inicializar almacén de datos de la siguiente manera:
var store = new DocumentStore() { Url = "http://localhost:8022" };
store.Initialize();
A continuación, estoy haciendo tales consulta:
using (var session = store.OpenSession())
{
Stopwatch watch = new Stopwatch();
watch.Start();
var result = session.LuceneQuery<Item>("Raven/DocumentsByEntityName")
.WhereEquals("Tag", "Items")
.ToList();
watch.Stop(); // watch.ElapsedMilliseconds == ~550 ms
return result;
}
Y watch.ElapsedMilliseconds
es siempre ~ 550 ms.
Pero cuando miro a la consola RavenDB veo que la consulta se procesa en 3 ms:
Request # 170: GET - 3 ms - 200 - /indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128
Por lo tanto ~ 99,5% del tiempo se han gastado no en RavenDB. ¿Cuál es el problema? (RavenDB 147)
cuando cambio a autoalojamiento de RavenDB (es decir, como cliente incorporado) todo está bien (~ 3 ms).
Para aclarar esta cuestión no en red, http depuradores, los servidores DNS etc. i también probado esto:
Stopwatch watch = new Stopwatch();
watch.Start();
WebClient client = new WebClient();
var result = client.DownloadString("http://127.0.0.1:8022/indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128");
watch.Stop(); // watch.ElapsedMilliseconds == ~3-10ms
rápido. Pero el cambio a Raven.Client.Lightweight tiempo aumentar la respuesta en 200 veces (550-600 ms)
Solución
El problema era debido intermediario en mi equipo - NOD32. Si también está utilizando - desactive la casilla de verificación siguiente:
Configuración -> Configuración avanzada -> Antivirus y antispyware -> Filtrado de Protocolo -> "Activar la aplicación del contenido de la filtración Protocal"
incapacitante simple de antivirus o firewall no ayuda!
Otros consejos
Tal vez nitpicking y tal vez sólo un tip-o, pero a veces las cosas más tontas nos puede volver loco;
su declaración: "Raven.Server comenzó y enganchan al puerto 8082 Me inicializar almacén de datos de la siguiente manera:."
el ejemplo de código lee: "Tienda var = nuevo DocumentStore () {url = "http: // localhost: 8022 "};"
El puerto en su título es 8082 y el puerto en su ejemplo es 8022 .
Me doy cuenta de que su Typ-o puede no estar en su código real, pero nunca está de más comprobar.
'm jus' diciendo
P