asp.net - Npgsql 无法通过 PgPool 与 CentOS PostgreSQL 建立连接

标签 asp.net postgresql centos npgsql pgpool

我在 Asp.net 中有一个 Web 应用程序连接到一个单独的数据库服务器,该服务器运行 CentOS 和 PostgreSQL。此设置工作正常。

为了提高数据库服务器的性能,我正在尝试安装和配置 PgPool-II 以在 CentOS 服务器上汇集数据库连接。

配置完成后,我可以从 CentOS 命令行使用 pgpool 配置的端口连接到 PostgreSQL,因此我假设 pgpool 已启动并正在运行。

当我尝试使用我的新 pgpool 端口从我的 web 应用程序连接到数据库服务器时,我在事件日志中得到以下 NpgdslException:

Failed to establish a connection to '[ip-address of db-server]'

一些配置文件:

pgpool.conf:

listen_address = '*'
port = 6432
pcp_port = 9898

enable_pool_hba = true

socket_dir = '/tmp'
pcp_socket_dir = '/tmp'

backend_hostname = ''
backend_port = 5432

num_init_children = 50
max_pool = 4
connection_life_time = 120
client_idle_limit = 0

debug_level = 0

pool_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# Network access
host    all             all     192.168.0.0/24          md5

我在/etc/sysconfig/iptables 中配置的 CentOS 防火墙中打开了所有端口。 因此,当我在我的 Web 应用程序中连接到端口 5432 时,一切都很好,但是当我将端口更改为 6432(pgpool 的端口)时,我得到了提到的异常。

谁能帮帮我?

最佳答案

首先要做的是确保 pgpool 在正确的端口上运行。这可以使用 fuser 轻松完成:

fuser -n tcp 6432

如果它没有返回任何内容,则没有任何内容在您的端口上监听。在这种情况下,确保 pgpool 正在运行:

ps -A | grep pgpool

如果这只显示你的 grep,那么你的 pgpool 还没有启动。有关如何启动它的信息,请参阅您的 rpm 信息。这可能涉及chkconfigsystem

关于asp.net - Npgsql 无法通过 PgPool 与 CentOS PostgreSQL 建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16193690/

相关文章:

c# - 这个json格式正确吗?

c# - 获取 Web 项目引用的类库项目中的相对文件路径

c# - 使用表单输入将文件上传到网络服务时遇到问题

sql - 有没有一种更优雅的方法来检测大型SQL表中的更改而不进行更改?

python - Django 中 URL 引用 PostgreSQL 数据库密码

eclipse - 如何通过 yum 为 Eclipse Helios 获取 Java、Java EE 和 Hibernate 插件?

c# - ASP.NET MVC : Check database connectivity on application startup

sql-server - 设置从 SQL Server 2005 到 PostgreSQL 的链接服务器

java解码à的错误转换

linux - maven: bash mvn 权限被拒绝