我的生产环境中的 MySQL 查询花费的时间也比我预期的要长得多。有问题的站点是一个相当大的 Drupal 站点,安装了许多模块。网络服务器 (Nginx) 和数据库服务器 (mysql) 托管在不同的机器上,通过 100mbps 的 LAN 连接(由 Rackspace 托管)连接。
我在我的笔记本电脑上运行完全相同的站点以进行开发。显然,在我的笔记本电脑上,网络服务器和数据库服务器在同一个机器上。
以下是我的数据库查询时间的结果:
生产:
在 320.33 毫秒内执行了 291 次查询。(主页)
在 999.81 毫秒内执行了 517 次查询。(内容页)
发展:
在 46.28 毫秒内执行了 316 次查询。(主页)
在 79.09 毫秒内执行了 586 次查询。(内容页)
从这些结果中可以清楚地看出,在我的笔记本电脑上查询 MySQL 数据库所涉及的时间要短得多,其中 MySQL 服务器与 Web 服务器运行在同一数据库上。
为什么是这样?!
一个因素必须是网络延迟。从 Web 服务器到数据库服务器的往返平均需要 0.16 毫秒(由 ping 显示)。必须将其添加到每个单个 MySQL 查询中。因此,以上面的内容页面为例,其中执行了 517 个查询。仅网络延迟就会使总查询时间增加 82 毫秒。但是,这并不能解释我所看到的差异(笔记本电脑上的 79 毫秒与生产盒上的 999 毫秒)。
我还应该考虑哪些其他因素?我曾考虑将 NIC 升级到千兆连接,但显然还涉及其他问题。
我已经从http://www.day32.com/MySQL/运行了 MySQL 性能调整脚本,它告诉我我的数据库服务器配置良好(显然比我的笔记本电脑好)。报告的唯一问题是“在 4394 个临时表中,48% 是在磁盘上创建的”。在两种环境和生产环境中都是如此,我什至尝试将 max_heap_table_size 和 Current tmp_table_size 增加到 …
我知道有很多工具可以测试带宽和延迟,但它们都依赖于至少有一台可以运行这些测试的主机。
我想知道是否有在线资源或其他某种方式来估计两个国家/地区之间的延迟或速度(一般而言)。
例如,如果服务器位于新加坡或澳大利亚,日本客户的延迟会更低吗?印度用户是否有可能从英国或美国的服务器获得更高的下载速度?
是否有任何在线资源或一些聪明的方法可以以合理的准确度回答这些问题?
[更新]:感谢 Raffael Luthiger 的精彩建议。我不知道那些看起来像玻璃的服务器。海底电缆地图也很酷(感谢 Jesper Mortensen)。如果我可以向该地区的那些网络专业人员询问他们的经验,这似乎也很明智,但显然我无法接触到这些。至少其中一些在SF :)
但是,我仍然有点不确定如何组合这些资源来给我一些测量结果。这是我拥有的信息:两个国家(A,B)。我确实有 A 国客户的 IP 地址(例如,我可以从 Web 服务器日志文件中获取这些地址)。大概我可以在 B 国找到一些窥镜服务器并跟踪这些 IP。最好的测量方法是什么?是否有任何脚本可以帮助自动化至少部分流程?
我们在美国 DC 有一台服务器,可以从美国和印度、南亚和东南亚访问。使用 128GB RAM、CPU 和 Cent OS 7 + GNOME 桌面,它运行 VNC 服务器 - 服务器可以通过 VNC 查看器或 Guacamole-on-vnc 访问。我们也尝试了 Nomachine 服务器-客户端对。
我们在桌面上面临着呆滞,例如将 Window 从一个地方移动到另一个地方,在 GVIM 中滚动等。它降低了生产力。Gucamole 比 VNC 好(也可能是 nomachine),但它仍然可见。
下面是一次访问的延迟图片。
在跨国公司中,我们已经看到来自印度或反之亦然的美国服务器访问没有延迟。这些可能不像在同一国家/地区拥有服务器那么顺利,但您可以在其中工作。在我们的情况下不是。
**有人可以帮忙在这里找到解决方案,例如-
任何建议将不胜感激。**
在数据存储/实时性能数据中查看我们现有 VMware ESXi 4.1 主机的性能数据
人们似乎并没有因为这些数字太慢而抱怨太多。但是,在人们发现它是一个问题之前,它们还能提高多少?
由于存储空间不足,我们正在审查我们的总部系统,并且在短期内购买带有 DAS 的第二台 VM 主机或购买某种 NAS 用于 SMB 文件共享和可能在更长时间内运行 VM 之间折腾学期。
目前,我们在总公司有不到 40 名员工,在全国设有 9 个较小的分支机构。总部在基于 MS RDS 会话的环境中运行,使用 linux ERP 和邮件系统。单个主机上总共有 22 个虚拟机,DAS 由 RAID 10 制成,RAID 10 由 6 个 15k SAS 磁盘组成。
performance network-attached-storage hard-drive latency vmware-esxi
tl;dr:为什么当从 EC2 请求时从 RDS 获取 SELECT 语句的结果 10,000 次所花费的时间如此不均匀?
用中小型RDS服务器的结果更新问题
在尝试使用 AWS 检查获取 SQL 查询结果所花费的时间时,我得到了以下非常不均匀的结果:
我写了一个 PHP 代码来报告我从服务器获取n次SELECT 查询的结果所花费的时间。
while($flag<n)
{
$t=microtime(true);
$result=$con->query($q);
$t=microtime(true)-$t;
$total+=$t;
$flag++;
}
Run Code Online (Sandbox Code Playgroud)
5 次试验的结果是:20、21、20、20、21(全部以秒为单位)
5 次试验的结果是:33、33、33、33、3(全部在秒内)
我正在尝试使用 Dijkstra 代码找到两个主机 H1 和 H2 之间的最短路径。在该路径上的其中一个开关中设置条件。条件是:如果数据包发送到H2则自动改变路径。
我正在使用 Mininet,我想通过过滤进入交换机并发送到 H2 的数据包来使用tc来减少出站带宽,然后 Dijkstra 代码将改变路径。
我想问一下,我可以使用(tc qdisc)来控制给定链路上出站带宽的使用吗?请问TC物理链路或仿真链路上的效果呢?
我想知道在我的网络中引入新网关是否会减慢速度。这个问题可能听起来不清楚,但这里有一个说明:
安装网关服务器之前
Main Router <=> switches <=> servers
Run Code Online (Sandbox Code Playgroud)
安装网关服务器后
Main Router <=> IPtables router <=> switches <=> servers
Run Code Online (Sandbox Code Playgroud)
我的问题是。这将延迟传入的传出请求/文件传输多少。谢谢,雷光
我住在加拿大,我想退出在线虚拟主机并在我自己的服务器上托管东西。问题是,我的网站迎合了大量的美国流量,大约 90% 的流量来自美国。
在加拿大拥有我的服务器有很大的缺点吗?
请注意,由于网站的性质,速度非常重要。
- 编辑 -
我想知道的主要事情-> 是在加拿大建立自己的服务器,从长远来看,我将节省的钱值得,或者我应该在美国获得一个每月约 200 美元的专用服务器。
几个月来,我一直在使用吸烟来监控 8.8.8.8 的互联网延迟(用于早期问题检测)。周五,平均延迟从 12 毫秒变为 55 毫秒,并且已经在 55 毫秒的稳定状态持续了 3 天。我们的 WAN 为所有 Internet 连接使用相同的提供商,因此我们很好奇它们是否有问题,或者 8.8.8.8 是否只是决定阻塞管道。
我们的 ISP 声称问题出在 8.8.8.8,但我仍然怀疑。
我注意到我得到了与 4.2.2.2 相同的(55 毫秒)延迟,但我没有绘制该 IP,因此我没有任何参考数据来证明服务质量下降。
任何关于如何追踪这种异常的建议都会有所帮助。
PS:流量显示我们的路由器上没有过多的流量,这将指向行为驱动的服务下降。
性能调优/监控/延迟牢记我看到以下 4 个项目,在每个项目中,它们都有很多工具。
我看到以下我们使用的工具。
如果我缺少任何东西,请您添加。
一季度。推荐工具?& 最佳实践/结果。
Q2。为了从使用 Linux(Fedora/CentOS/Ubuntu)的 X86 服务器中获得最佳结果,需要使用哪些工具?为什么?
使用您的所有经验,希望使用这些工具创建一张 Live CD。
我不知道 serverfault 管理员会允许这样的问题。在此先感谢所有的 Guru。
latency ×10
networking ×4
performance ×4
bandwidth ×2
hard-drive ×2
linux ×2
mysql ×2
amazon-ec2 ×1
amazon-rds ×1
centos ×1
drupal ×1
gateway ×1
hosting ×1
internet ×1
tc ×1
traffic ×1
vmware-esxi ×1
vnc ×1
web-hosting ×1
website ×1