- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 Perl Web 应用程序有问题,该应用程序在 Windows 2008r2 上的 Apache 2.2 上运行,在 CentOS 服务器上使用单独的 MySQL 数据库。
这是问题:我定期收到错误超时:
DBI connect('host=10.148.xxx.xxx:database=XXX','root',...) failed: Can't create TCP/IP socket (10106)
当我说周期性时,这意味着大部分时间一切都按预期工作,但有时我会收到此消息并导致我的应用程序抛出错误页面。
我在互联网上搜索了很多,发现了一些对我不起作用的推荐解决方案。
首先,我认为我的数据库服务器无法访问,但使用 MySQL 企业监视器后我发现情况并非如此。
然后我认为我可能已经用完了 TCP 端口,所以我增加了临时端口的数量并减少了超时时间,如本文所述: http://www.outsystems.com/forums/discussion/6956/how-to-tune-the-tcp-ip-stack-for-high-volume-of-web-requests/
简而言之,我是这样做的:
Reduce the TIME_WAIT by setting the TcpTimedWaitDelay TCP/IP parameter to 30 seconds on the windows registry key HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, as a DWORD value.
Increase the range of ephemeral ports by setting the dynamicportrange to an higher value through the command netsh int ipv4 set dynamicportrange tcp start=32767 num=32768, this will set the port range from 32768 to 65535."
但是没有运气,仍然超时
接下来,我用这些参数更新了我的 Apache 配置文件以进一步减少 KeepAliveTimeout
:
Timeout 100
MaxKeepAliveRequests 100
KeepAliveTimeout 5
仍然没有运气。
我的主要问题是大部分时间一切正常,我什至无法重现这个问题,但它每天都会出现,我的客户很生气。
我什至不确定该往哪个方向走,是 MySQL,还是 Perl DBI 模块问题,是 Apache,还是 TCP/IP 配置,所以任何帮助将不胜感激。
最佳答案
您似乎遇到了一个单独的问题,表现为“无法创建 TCP/IP 套接字 (10106)”。
除非您要处理大量非常快速的连接,否则您不需要编辑临时端口或超时。通过这样做,您只是将原因推迟到以后发生。
我会检查您的应用程序(完整)在完成连接后是否正在关闭连接?这包括数据库连接、客户端 http 套接字、文件/目录句柄等...使用“netstat”来监视应用程序运行时当前打开的端口/连接。找出不断增加的内容,然后在您的应用程序(或也在同一台机器上运行的其他一些应用程序)中追踪导致此类连接的原因。然后您可以采取措施正确关闭连接,从而解决您的问题。
希望这对您有所帮助。祝你好运。
关于mysql - Perl Web 应用程序问题 : DBI connect failed: Can't create TCP/IP socket (10106),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275378/
我在我的应用程序中使用 JDBI 和 Dropwizard。我已经使用 dbi.open 命令获取了一个 DAO 实例,然后使用它来运行各种查询。在“finally” block 中,我使用 dao.
我有一个在 eval 中运行的数据库查询,以捕获错误。问题是错误消息正在输出到控制台,即使它被困住了。如何阻止错误消息执行此操作,因为我想自己解析它并吐回我自己的消息? my $dbh = DBI->
这是我使用 DBI 的示例代码: db = DBI.connect("DBI:Mysql:database=testdatabase;host=testhost;port=30012", "testu
使用: MySQL 5.5ActivePerl v5.14.1Windows 7 64 位 以下脚本在执行调用失败时有一个未定义的 $DBI::errstr: #!c:/perl/bin/perl.e
这是整个错误 SCREAM: Error suppression ignored for ( ! ) Fatal error: Maximum execution time of 30 seconds
在Perl中捕获任何DBI错误的最佳方法是什么?例如,如果由于插入的值中包含非法字符而导致插入失败,那么如何使脚本不失败,但是如何捕获错误并进行适当处理。 我不想做“死”,因为我不想停止脚本的执行。
在工作中,我们有一个 DBA,他说他的 RAC 工作得很好,但事实并非如此。像 Toad 或 SQL Developer 这样的 SQL IDE 会随机断开它们的连接(我怀疑是因为 RAC 的网络设置
所以我有这个非常简化的片段: @cmd_arry = ("Bob Newhart", "54"); $sqlCmd = "UPDATE foobar SET name = ?, age = ?"; $
除了使用标准代码模具“无法连接:$ DBI::errstr\n”来处理错误之外,是否可以编写如下的自定义代码? 标准: $dbstore = DBI->connect($dsn, $user, $pw
假设我正在查询一个类似于以下内容的表: $dbh->selectrow_hashref('SELECT id, name FROM foos WHERE name = "bar"'); 当然,id将是
我在长时间运行的 perl 脚本中遇到了一些内存泄漏问题,其中 perl 占用的内存量继续增长。因此,我尝试使用 Devel::Leak追踪泄漏。我发现每当我调用 DBI的prepare方法,Deve
我想从表中复制一条记录,修改记录中的一些字段并插入到同一个表中。该表有 90 列。 考虑在一个语句中使用 insert..select 但有 90 列,我需要在选择查询中告诉列名。我怎样才能在 per
我有这个查询 select * from table where ID in (1,2,3,5...) 如何使用占位符使用 DBI 构建此查询? 例如 : my @list = (1, 2, 3, 4
如何使用 perl 和 fbi 针对 sql server 检索存储过程的返回值?有人可以举个例子吗? 最佳答案 DBD::ODBC t/dir 中有示例(参见 20SqlServer.t)。基本上你
实际上我已经执行了postgres查询,假设它返回了10行。现在我有了语句处理程序( $sth )。 print Dumper $sth->fetchrow_arrayref; print Dumpe
我想让 perl 在我自己的路径中使用 DBI 模块(假设,/home/users/zdd/perl5/lib/DBI),但是系统也有一个 DBI 模块,它是/usr/lib/perl5/库/DBI。
实际上我已经执行了postgres查询,假设它返回了10行。现在我有了语句处理程序( $sth )。 print Dumper $sth->fetchrow_arrayref; print Dumpe
我不熟悉在 perl 脚本中使用 DBI 进行 SQL 查询。我遇到的问题与具有正斜杠的字段中的数据有关。我想使用变量作为 where 子句的输入,但它正在做 DBI 打算用正斜杠做的事情:停止查询。
假设我有一个连接到数据库的子例程。然后我想进行查询并接收输出并对其进行处理,当然,但是如果查询无效怎么办? 所以让我们假设我有类似的东西: $dbh = DBI->connect(, , ); $qu
我正在使用 Perl 的 DBI 进行 postgreSQL 访问,我注意到当我有多个并发进程准备同一个查询时,它们似乎在服务器上以相同的准备语句名称结束,从而产生了冲突。 2014-02-10 10
我是一名优秀的程序员,十分优秀!