Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mono上的Npgsql超时异常_C#_Postgresql_Mono_Ubuntu 14.04_Npgsql - Fatal编程技术网

C# mono上的Npgsql超时异常

C# mono上的Npgsql超时异常,c#,postgresql,mono,ubuntu-14.04,npgsql,C#,Postgresql,Mono,Ubuntu 14.04,Npgsql,我们得到了以下异常,它似乎来自Npgsql.dll 我们在ASP.NetC应用程序中使用这个DLL,该应用程序托管在ubuntu14.04服务器上的Apachemod\u mono下。该DLL负责与Postgresql Server对话。我们在服务器上安装了最新版本的Postgresql System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---&

我们得到了以下异常,它似乎来自
Npgsql.dll

我们在
ASP.Net
C
应用程序中使用这个
DLL
,该应用程序托管在
ubuntu14.04
服务器上的
Apache
mod\u mono
下。该
DLL
负责与
Postgresql Server
对话。我们在服务器上安装了最新版本的
Postgresql

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> Npgsql.NpgsqlException:
Failed to establish a connection to 'localhost'.
  at Npgsql.NpgsqlClosedState.Open (Npgsql.NpgsqlConnector context, Int32 timeout) [0x00000] in <filename unknown>:0
  at Npgsql.NpgsqlConnector.Open () [0x00000] in <filename unknown>:0
  at Npgsql.NpgsqlConnectorPool.GetPooledConnector (Npgsql.NpgsqlConnection Connection) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000] in <filename unknown>:0
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
  at ASP.default_aspx.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
  at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0
  at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0

System.TimeoutException: Dns hostname lookup timeout. Increase Timeout value in ConnectionString.
  at Npgsql.NpgsqlClosedState.Open (Npgsql.NpgsqlConnector context, Int32 timeout) [0x00000] in <filename unknown>:0 
此错误随机发生,然后使服务器崩溃

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> Npgsql.NpgsqlException:
Failed to establish a connection to 'localhost'.
  at Npgsql.NpgsqlClosedState.Open (Npgsql.NpgsqlConnector context, Int32 timeout) [0x00000] in <filename unknown>:0
  at Npgsql.NpgsqlConnector.Open () [0x00000] in <filename unknown>:0
  at Npgsql.NpgsqlConnectorPool.GetPooledConnector (Npgsql.NpgsqlConnection Connection) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000] in <filename unknown>:0
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
  at ASP.default_aspx.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
  at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0
  at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0

System.TimeoutException: Dns hostname lookup timeout. Increase Timeout value in ConnectionString.
  at Npgsql.NpgsqlClosedState.Open (Npgsql.NpgsqlConnector context, Int32 timeout) [0x00000] in <filename unknown>:0 
System.Web.HttpUnhandledException:引发了类型为“System.Web.HttpUnhandledException”的异常。-->Npgsql.NpgsqlException:
无法建立到“localhost”的连接。
在Npgsql.NpgsqlClosedState.Open处(Npgsql.NpgsqlConnector上下文,Int32超时)[0x00000]in:0
在0中的Npgsql.NpgsqlConnector.Open()[0x00000]处
在:0中的Npgsql.NpgsqlConnectorPool.GetPooledConnector(Npgsql.NpgsqlConnection Connection)[0x00000]处
---内部异常堆栈跟踪的结束---
在0中的System.Web.UI.Page.ProcessException(System.Exception e)[0x00000]处
在0中的System.Web.UI.Page.ProcessRequest(System.Web.HttpContext上下文)[0x00000]处
在0中的ASP.default_aspx.ProcessRequest(System.Web.HttpContext上下文)[0x00000]处
在System.Web.HttpApplication+c__迭代器1.MoveNext()[0x00000]中:0
位于:0中的System.Web.HttpApplication.Tick()[0x00000]处
System.TimeoutException:Dns主机名查找超时。增加ConnectionString中的超时值。
在Npgsql.NpgsqlClosedState.Open处(Npgsql.NpgsqlConnector上下文,Int32超时)[0x00000]in:0

如果您能帮助您找出导致此错误的原因,我们将不胜感激。

看来“localhost”的DNS主机名查找正在超时。可能不使用DNS,而是在连接字符串中使用环回IP 127.0.0.1。

您应该这样运行应用程序

MONO\u线程/CPU=50 MONO MyApp.exe
原因是npgsql版本2.2.7中使用了ThreadPool,而且中的套接字也使用ThreadPool。当打开使用线程池的连接时,Npgsql使用GetHostEntryAsync方法解析主机名。即使在连接字符串中显式指定ip,npgsql也将调用BeginConnect套接字方法,该方法是异步的,并将使用线程池。在mono中,默认情况下,池中每个CPU核心的线程数为1。而在.net中还有其他算法。结果,池中的线程开始短缺,mono环境开始缓慢地发出线程


当每个核心只有几个线程时,池不会发出现有的就绪线程,而是创建一个新的就绪线程,并且创建需要很长时间。使用MONO_THREADS_PER_CPU参数,我们告诉MONO运行时在池N*(核心数)线程中保持就绪

看起来“localhost”的DNS主机名查找超时了。可能不使用DNS,而是在连接字符串中使用环回IP 127.0.0.1。Thanx@RonBeyer-如果你将此作为答案发布,如果它有效,我可以接受。完成!让我们知道它是否有效。@ShaneVanWyk你找到解决方案了吗?没有,它自己解决了。Npgsql有时可能不确定。如果您正在使用mono.security将其更改为
127.0.0.1
,但没有产生任何影响,而是现在显示
无法建立到“127.0.0.1”的连接,请确保mono.security在您的bin中。