我现在正在我客户端的专用服务器上使用 PHP 网站,我会定期收到错误消息,too many connections但约有 5 位用户正在浏览此页面。
在phpMyAdmin我可以看到max connections变量设置为400.
在我们公司的本地 MySQL 服务器上,我们已max connections设置为200和其他伙伴同时使用该服务器。
我听说在他们的服务器上,其他一些网站正在使用具有大流量的相同 MySQL。
以下是我的问题:
我已经在 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 并成功对其运行命令。
对于为什么会发生这种情况,我有点不知所措。任何输入都会很棒。
我需要为我的应用程序和 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 移到客户端的中间步骤?
我一点也不知道我在做什么,因此非常感谢您能给我的任何帮助、建议、评论和参考。
先感谢您。:)
我正在开发一个 HTTP 服务器,它应该只允许每个用户有一定数量的连接。我如何优雅地告诉用户n不允许多个连接。我尝试n+1用 403回答th 请求,但显然这会杀死整个下载。(至少有DownThemAll!)
我已经通过 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) 我从我的客户端 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) 我无法使用 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。任何想法如何连接公钥身份验证?
连接到:CentOS v?? 与 MySQL 4.?? 在纳什维尔(例如公共 ip=11.11.11.11)
堆栈:电缆调制解调器作为网关 > 带转发功能的路由器 > CentOs Box
连接来源:达拉斯的 Windows 2003 R2(例如 public ip=22.22.22.22)
我正在尝试通过我的公共 IP 从远程服务器访问我的 MySql 服务器。当我尝试连接时,几秒钟后出现“无法打开与主机的连接”的错误。它没有机会要求我提供登录凭据。以下是我为打开此服务器以进行远程连接所做的一些事情:
当我尝试从达拉斯的盒子 telnet 到纳什维尔 3306 端口的盒子时,我得到了这个:
Run Code Online (Sandbox Code Playgroud)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
但是,我可以从 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 …
我有一个 HTTP 网络服务,有时连接设置会以一种奇怪的方式失败:
在哪些情况下客户端系统可以决定用 RST 数据包进行回复?我可以想象当 SYN,ACK 包含例如时会发生这种情况。不正确的序列号(但这似乎不适用于我的情况 - 序列号看起来不错)。所以我对详尽的 :-) 列表感兴趣,其中列出了客户端在收到 SYN,ACK 数据包后会发送 RST 数据包的情况。
特别是,客户端应用程序代码(在 Linux 下使用普通的 BSD 风格的套接字 API)是否有可能导致这个 RST 数据包,例如。通过close()在 3 次握手仍在进行时调用?
我们目前在消息中遇到了很多 Redis 错误
无法连接:连接时读取错误,尝试下一个服务器
我们使用 PHP Redis 在 FreeBSD 上运行 Redis,我们很难在 Ubuntu 上重现该错误,因此这可能是一个提示。在 github 上有一个关于该主题的长期问题。
基本上我们通过调用connect(host, port, timeout)phpredis从操作系统获得一个套接字,但是当我们select(db_index)之后执行 a 时,我们得到一个异常。持久化会不会有问题?我假设 connect 在后台不执行任何操作,而 select 尝试访问实际上已关闭的连接。
我们不会遇到超时。我们尝试调整 TIME_WAIT 没有成功。
关于问题可能来自哪里的任何其他想法?跟踪问题的最佳方法是什么?dtrace 也许?
更新
我们目前正在研究我们的 BGSAVE 设置。有趣的是,为定期将数据写入磁盘(持久性)的进程创建一个 fork 需要半秒甚至更多的时间,并且可能 redisconnect()在该时间段内无法响应请求。
connection ×10
mysql ×3
redis ×2
time-wait ×2
centos ×1
encryption ×1
firewall ×1
freebsd ×1
haproxy ×1
http ×1
http-server ×1
https ×1
networking ×1
nx ×1
socket ×1
sql-server ×1
ssh ×1
ssl ×1
tcp ×1
ubuntu ×1
virtualbox ×1
windows-7 ×1