短篇小说:我不能从同一个客户端进程同时在solr5上运行两个以上的搜索(相同的故事和4.10)。配置文件中是否有我遗漏的标志?这是一个被证实的事实,它不是硬件问题或软件(客户)问题。完整的故事见下文。
说来话长:
我需要构建一个基于单词的搜索引擎(字段通常只包含一个单词/值--即使它是一个多值字段,所有值也只有一个单词),60%-70%的搜索没有通配符。预期的核心尺寸约为50K个文件,平均20个字段。该集合预计每周更新一次(可能更少)--所以我并不真正关心索引时间。我想我们可以安全地假设没有写,只要读-因此,我们可以最小化锁和其他并发问题的可能性。而且,在我的测试中,最“昂贵”的查询是(根据solr的qtime)大约150。我有一批10K随机生成的搜索,无论我在做什么,我不能在不到5分钟内完成它们。不管我在客户端打开了多少线程,无论我在配置文件中设置了什么值.处理器在30-40%的最高,只有30%的内存;
我试过的是:
对于#1和#2使用netstat -a -n | grep @port,在任何给定时间我只看到2个活动连接(已建立)--但没有更多,而对于#3,我在这2个活动连接之外还有其他10-15个处于TIME_WAIT模式(非活动)的连接。
我不知何故迷失在这..。我不是Java忍者,我也不喜欢java相关的产品及其配置。我使用了两个不同的servlet容器,它们几乎都有相同的问题。海事组织,很明显有人控制了主动的联系--我不知道该怎么做才能找出是谁和为什么。
顺便提一句--我不确定它是否重要--我在另一台机器上复制了同一台工具,同时开始了与机器上的“压力”测试,我注意到活动连接的数量翻了一番(通过netstat),资源仅略高于单机测试中的资源,并且这两台机器的执行时间是:5分钟。
那么,我应该怎么做才能取消这一限制--或者至少增加限制呢?
发布于 2015-03-06 13:33:38
和往常一样,问题就在椅子和键盘之间。:(
客户端是在C#中使用普通的旧WebRequest类完成的--它遵守对同一个地址进行并发HTTP调用的系统限制(以避免DOS)。
在阅读了this的文章之后,我意识到问题出在哪里。因此,app.config中的以下调整解决了这个问题:
<system.net>
<connectionManagement>
<add address = "*" maxconnection = "300" />
</connectionManagement>
</system.net>它用16个打开的线程在大约一分钟内完成了所有这些请求。活动连接在netstats中也是可见的。
https://stackoverflow.com/questions/28898752
复制相似问题