我正在尝试通过打开大量与服务器的套接字连接来加载测试Java服务器,验证,关闭连接,然后重复.我的应用程序运行了一段时间,但最终我得到:
java.net.BindException:地址已在使用中:connect
根据我读过的文档,其原因是在调用close()之后的一段时间内,关闭的套接字仍占用分配给它们的本地地址.这取决于操作系统,但可以是几分钟.我试着调用setReuseAddress(true)socket,希望它的地址在close()被调用后可以立即重用.不幸的是,情况似乎并非如此.
我的套接字创建代码是:
Socket socket = new Socket();
socket.setReuseAddress(true);
socket.connect(new InetSocketAddress(m_host, m_port));
Run Code Online (Sandbox Code Playgroud)
但我仍然得到这个错误:
java.net.BindException:已经在使用的地址:一段时间后连接.
有没有其他方法可以完成我想要做的事情?我想举个例子:打开100个插座,关闭它们,打开200个插座,全部关闭,打开300个等,最多可达2000个左右的插座.
任何帮助将不胜感激!
我正在研究一种解决方案,将应用程序日志存储在Elastic Search中,用于许多开发团队中的许多应用程序.每个日志条目的结构与"app"字段相同,以指示应用程序.
第一个目标是支持在单个"应用程序"中进行有效查询.查询所有应用程序虽然仍然很重要,但仍然是次要的.
我正在努力确定什么是最好的:
编辑:在这两种情况下,我将使用基于时间的索引.
多指数系列
每个"app"都有一系列基于时间的索引(app1-2017-04-01,app1-2017-04-02,...等).用户可以直接对这些较小的索引执行搜索.这里的想法是,由于索引的大小较小,可能查询它们更快?
单指数系列
使用一个巨大的索引系列来表示所有应用程序日志(例如logs-2017-04-01,logs-2017-04-02,...等)用户将查询"app"字段以缩小搜索结果范围.
在这种情况下哪个更快?我很好奇其他索引的开销成本
我不小心删除了数据库中的一行,我想重新插入该行.问题是主键设置为自动增量,IDENTITY INSERT并设置OFF为表.我想暂时启用标识插入,这样我就可以插入已删除的行,然后禁用标识插入.
在SQL Server Management Studio中,我尝试了以下操作:
SET IDENTITY_INSERT myTable ON
INSERT INTO myTable (id, name, value)
VALUES (241, 'hello', 'hello2')
SET IDENTITY_INSERT myTable OFF
Run Code Online (Sandbox Code Playgroud)
第一行失败了:
消息8105,级别16,状态1,行
2'myTable'不是用户表.无法执行SET操作.
知道为什么吗?