标签: connection

PHP/mySQL:如何调试“连接过多”错误?

我现在正在我客户端的专用服务器上使用 PHP 网站,我会定期收到错误消息,too many connections但约有 5 位用户正在浏览此页面。

phpMyAdmin我可以看到max connections变量设置为400.

在我们公司的本地 MySQL 服务器上,我们已max connections设置为200和其他伙伴同时使用该服务器。

我听说在他们的服务器上,其他一些网站正在使用具有大流量的相同 MySQL。

以下是我的问题:

  • 如何调试这个问题?
  • 我可以查看一些在过去 10 分钟内执行的 SQL 查询列表,以检查是我们的问题还是他们的问题?

mysql connection

8
推荐指数
1
解决办法
5967
查看次数

无法连接到安装在从 Windows 7 运行 Ubuntu 的 VirtualBox 上的 Redis

我已经在 Windows 7 主机上的 VirtualBox 上设置了一个 Ubuntu 映像。在 Ubuntu 客户机上,我安装了默认在端口 6379 (TCP) 上运行的 Redis。

我已经使用 VirtualBox GUI 为 SSH 设置了端口转发,并验证了通过连接到 localhost:2222 连接正确转发到端口 22 并且 SSH 工作。

但是,当我为端口 6379 完成相同的设置时,在连接端口 30000(设置为转发到 6379)时出现“telnet:无法连接到远程主机:连接被拒绝”错误。

为了验证 Redis 是否正确运行,我验证了我可以使用端口 6379(telnet localhost 6379)在本地(通过来宾计算机上的命令行)连接到 Redis 并成功对其运行命令。

对于为什么会发生这种情况,我有点不知所措。任何输入都会很棒。

ubuntu windows-7 virtualbox connection redis

8
推荐指数
2
解决办法
2万
查看次数

SQL Server 2008 中的证书

我需要为我的应用程序和 Sql Server 2008 之间的传输实现 SSL。

我使用的是 Windows 7、Sql Server 2008、Sql Server Management Studio,我的应用程序是用 c# 编写的。

我试图按照 MSDN 页面上的创建证书以及“特定客户端的加密”下的这个页面进行操作,但我感到非常困惑。我需要一些小步骤才能在成功实施加密的道路上走得更远。

首先,我不了解MMC。我在那里看到很多证书......这些证书是我应该用于我自己的加密还是用于已经存在的东西?另一件事,我假设所有这些证书都是位于我本地计算机上的文件,那么为什么会有一个名为“个人”的文件夹?

其次,为了避免上述问题,我做了一个自签名程序集的小实验。如上面的 MSDN 链接所示,我使用在 SSMS 中执行的 SQL 创建了一个自签名证书。然后我使用以下连接字符串进行连接:

 Data Source=myServer;Initial Catalog=myDatabase;User ID=myUser;Password=myPassword;Encrypt=True;TrustServerCertificate=True
Run Code Online (Sandbox Code Playgroud)

它连接,工作。然后我删除了我刚刚创建的证书,它仍然有效。显然它从来没有做任何事情,但为什么不呢?我如何判断它是否真的“有效”?我想我可能错过了(以某种方式?)将文件从 SSMS 移到客户端的中间步骤?

我一点也不知道我在做什么,因此非常感谢您能给我的任何帮助、建议、评论和参考。

先感谢您。:)

ssl encryption connection ssl-certificate sql-server

7
推荐指数
1
解决办法
6657
查看次数

“连接过多”的正确 HTTP 状态是什么?

我正在开发一个 HTTP 服务器,它应该只允许每个用户有一定数量的连接。我如何优雅地告诉用户n不允许多个连接。我尝试n+1用 403回答th 请求,但显然这会杀死整个下载。(至少有DownThemAll!

http connection http-server

7
推荐指数
1
解决办法
7511
查看次数

使用 HAProxy 对 MySQL 进行负载平衡:读取通信数据包时出错?

我已经通过 xinetd 使用 HAProxy设置了负载平衡 MySQL 从站。2 个负载均衡器共享一个由 Pacemaker 管理的虚拟 IP:

crm configure show

node SVR120-27148.localdomain
node SVR255-53192.localdomain
primitive failover-ip ocf:heartbeat:IPaddr2 \
    params ip="192.168.5.9" cidr_netmask="32" \
    op monitor interval="5s" \
    meta is-managed="true"
primitive haproxy ocf:heartbeat:haproxy \
    params conffile="/etc/haproxy/haproxy.cfg" \
    op monitor interval="30s" \
    meta is-managed="true"
colocation haproxy-with-failover-ip inf: haproxy failover-ip
order haproxy-after-failover-ip inf: failover-ip haproxy
property $id="cib-bootstrap-options" \
    dc-version="1.0.12-unknown" \
    cluster-infrastructure="openais" \
    no-quorum-policy="ignore" \
    expected-quorum-votes="2" \
    stonith-enabled="false" \
    last-lrm-refresh="1342783084"
Run Code Online (Sandbox Code Playgroud)

/etc/haproxy/haproxy.cfg

global
    log 127.0.0.1 local1 debug …
Run Code Online (Sandbox Code Playgroud)

mysql connection load-balancing haproxy

7
推荐指数
1
解决办法
6727
查看次数

https 拖延 TIME_WAIT 连接

我从我的客户端 PC 连接到网络服务器,它仅使用 HTTPS。

当我连接时,我在 TCPView(替代 netstat 的 sysinternals 工具)中看到了很多到 https 端点的 TIME_WAIT 连接。很多时候我看到 11 个连接在 TIME_WAIT 中停留了 2 分钟。这就是每次我提出请求时。2-4 个连接在 ESTABLISHED 中保持打开状态无论我设置服务器的时间有多长Keep-Alive: timeout=xx

后面的连接是可以的,它们被适当地重用。之前的连接建立并需要整整 2 分钟。

我使用 WireShark 捕获了流量,并在延迟连接的源端口上看到了正常的 FIN、ACK 等传递。我经常看到 Chrome 和 IE(它们都使用 Windows HTTP 堆栈)在任何带有真实数据的请求出现之前发出 6 个 TCP 请求。有效载荷很小(大约 2000 字节)。

Firefox 根本不发出这些请求......

还值得一提的是,该证书是自签名的,并且不会在浏览器中进行验证(Firefox 的处理方式与 chrome 完全不同)。

为什么我的浏览器会发出这些请求?为什么 Firefox 不发出这些 tcp 连接?

编辑,这是 Chrome 建立的第一个连接的转储(使用wireshark 捕获):

    "https","0.000000",local-ip,dest-ip,"443","TCP","53890 > https [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=8 SACK_PERM=1"
    "53890","0.012749",dest-ip,local-ip,"53890","TCP","https > 53890 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1400 …
Run Code Online (Sandbox Code Playgroud)

https connection time-wait

7
推荐指数
1
解决办法
5639
查看次数

可以通过 SSH 连接,但不能通过 x2go

我无法使用 DSA 密钥通过 X2GO 连接到远程服务器。通过 SSH 连接工作正常,但是当我尝试与 X2GO 连接时,它会立即进入用户名/密码框,并且不想使用我在选项中指定的私钥。如果我选择“尝试自动登录”,它似乎尝试连接,然后出现以下错误:

没有匹配的公钥
访问被拒绝。可以继续的认证:publickey

它以前可以工作,但我重新安装了客户端操作系统,从那以后我无法连接。我从以前的安装中复制了所有 SSH 密钥。

我也尝试删除我的~/.ssh/known_hosts文件并添加密钥ssh-agent但没有成功,但密钥肯定是正确添加的:

$ ssh-add -l
1024 b9:3d:e5:ef:48:ea:fc:c6:6e:45:89:b5:35:e7:58:39 server.com_dsa (DSA)
Run Code Online (Sandbox Code Playgroud)

请注意,如果我在服务器上启用密码验证,我可以正常连接,但是我想使用 publickey。任何想法如何连接公钥身份验证?

ssh connection nx

7
推荐指数
1
解决办法
4万
查看次数

无法连接到远程服务器上的 MySql 服务器

  • 连接到:CentOS v?? 与 MySQL 4.?? 在纳什维尔(例如公共 ip=11.11.11.11)

    堆栈:电缆调制解调器作为网关 > 带转发功能的路由器 > CentOs Box

  • 连接来源:达拉斯的 Windows 2003 R2(例如 public ip=22.22.22.22)

我正在尝试通过我的公共 IP 从远程服务器访问我的 MySql 服务器。当我尝试连接时,几秒钟后出现“无法打开与主机的连接”的错误。它没有机会要求我提供登录凭据。以下是我为打开此服务器以进行远程连接所做的一些事情:

  • 在我的路由器上打开端口 3306 并将其转发到我的 MySql 框的本地 IP 地址。
  • 按照此博客条目中的说明进行操作。
  • 在 MySql 中创建了一个用户,可以访问我想要的数据库 (username@22.22.22.22)。** 当然,它甚至还不到这一步......只是想我会包括这个。

当我尝试从达拉斯的盒子 telnet 到纳什维尔 3306 端口的盒子时,我得到了这个:

C:\Documents and Settings\Administrator>telnet 11.11.11.11 3306
Connecting To 11.11.11.11...Could not open connection to the host, on port 3306: Connect failed
Run Code Online (Sandbox Code Playgroud)

但是,我可以从 22.22.22.22 ping 11.11.11.11(抱歉格式错误......我试过):

C:\Documents and Settings\Administrator>ping 11.11.11.11

用 32 字节的数据 Ping 11.11.11.11:

11.11.11.11回复:bytes=32时间=57ms TTL=54 11.11.11.11回复:bytes=32时间=61ms TTL=54 …

mysql remote-access firewall centos connection

6
推荐指数
1
解决办法
9361
查看次数

为什么客户端会发送 RST 数据包作为对 SYN,ACK 的回复?

我有一个 HTTP 网络服务,有时连接设置会以一种奇怪的方式失败:

  • 客户端发送 SYN 数据包
  • 服务器发送 SYN,ACK 回复
  • 客户端用 RST 响应

在哪些情况下客户端系统可以决定用 RST 数据包进行回复?我可以想象当 SYN,ACK 包含例如时会发生这种情况。不正确的序列号(但这似乎不适用于我的情况 - 序列号看起来不错)。所以我对详尽的 :-) 列表感兴趣,其中列出了客户端在收到 SYN,ACK 数据包后会发送 RST 数据包的情况。

特别是,客户端应用程序代码(在 Linux 下使用普通的 BSD 风格的套接字 API)是否有可能导致这个 RST 数据包,例如。通过close()在 3 次握手仍在进行时调用?

networking connection tcp socket

6
推荐指数
1
解决办法
5万
查看次数

Redis连接问题

我们目前在消息中遇到了很多 Redis 错误

无法连接:连接时读取错误,尝试下一个服务器

我们使用 PHP Redis 在 FreeBSD 上运行 Redis,我们很难在 Ubuntu 上重现该错误,因此这可能是一个提示。在 github 上有一个关于该主题的长期问题

基本上我们通过调用connect(host, port, timeout)phpredis从操作系统获得一个套接字,但是当我们select(db_index)之后执行 a 时,我们得到一个异常。持久化会不会有问题?我假设 connect 在后台不执行任何操作,而 select 尝试访问实际上已关闭的连接。

我们不会遇到超时。我们尝试调整 TIME_WAIT 没有成功。

关于问题可能来自哪里的任何其他想法?跟踪问题的最佳方法是什么?dtrace 也许?

更新

我们目前正在研究我们的 BGSAVE 设置。有趣的是,为定期将数据写入磁盘(持久性)的进程创建一个 fork 需要半秒甚至更多的时间,并且可能 redisconnect()在该时间段内无法响应请求。

freebsd connection redis time-wait

6
推荐指数
1
解决办法
1775
查看次数