背景
我正在一个非常小的团队中工作,以更新 struts 2 网站上的 css。我正在将代码部署到 tomcat 服务器进行测试,服务器从在 centos virtualbox 中运行的 oracle 数据库中提取数据。需要一种方法将我的队友连接到我的机器,我将计算机的 ip 地址连接到 freedns.afraid.org 上的动态 dns (ddns) 服务,并在我的路由器上设置转发以将端口 8080 流量路由到我的本地机器(基本 URL 示例:http://nameOfMyApplication.chosenDDNSDomain.com:8080/nameOfApplicationRootDirectory/)
眼镜
- 处理器:英特尔酷睿 i7-9700k CPU @ 3.60ghz
- 安装的内存:16.0gb(可用内存15.7gb)
- 操作系统:Windows 10 Pro 64位版本1903
- 互联网:Wi-Fi 连接至 at&t 光纤
- 路由器:arris bgw210
- 服务器:apache tomcat 版本 6.0.37
- java运行环境:1.6.0_45
- vm:oracle virtualbox 版本 5.2.6 r120293(Qt5.6.2)
- vm 操作系统:centos 版本 5.7
- 数据库:oracle数据库版本11.2.0
问题
虽然我认为这种配置通常适用于非常小的负载测试(最多 3 个用户),即使我是测试应用程序的唯一用户,我也会遇到问题。页面需要很长时间才能加载,并且在我的本地机器上,连接超时时间大约为一半。有时页面内容加载时未应用任何 CSS。css 似乎要么完全起作用,要么根本不起作用,并且给定页面的 css 可能在某一点起作用,但在另一点不起作用。我们的网站构建涉及“baseUrl”字符串,因此我不相信我可以同时为 localhost 和 ddns 访问构建应用程序。
问题/建议请求
- 通过互联网连接到我自己的机器会导致加载速度特别慢吗?由于我的机器正在发送请求、接收/处理请求、响应请求以及接收/处理响应,我预计速度会有所减慢,但我想知道我是否应该预计速度会减慢到网站无法可靠使用的程度。
- 我该如何确定速度变慢是在哪里发生的?虽然我用于 ddns 的域名一直在运行而没有任何明显的停机时间,但我想知道是否存在某些特定于域名的问题,或者是 freedns.afraid.org 域名在进行 DNS 查找时效率低下。本质上,我想弄清楚我的问题是否是由我正在使用的一般策略引起的,还是仅仅是由我选择的特定 ddns 提供商引起的。
答案1
有几件事:
- 您给出了机器的规格(大概如此),但没有给出虚拟机的规格。您应该检查 CentOS 虚拟机的可用资源,确保它不缺少 CPU、RAM 或 HD(包括交换空间)。
- 您应该能够让您的同事直接测试系统的 IP 地址,并排除 ddns 是导致速度变慢的原因。我通常不会认为 ddns 是问题所在,尤其是在初始解析后,系统应该缓存 TTL(生存时间)期间的条目,该时间通常为 1 小时。这意味着 DDNS 服务在 TTL 到期之前不起作用。因此,如果您看到初始连接速度很慢,随后连接速度变快,则可能与此有关,但除此之外,我认为 DDNS 无关
- 有些 ISP 很混蛋,会干扰直接连接,包括他们认为是“威胁”的连接(付费服务的收入损失、带宽使用过量或安全威胁)。尝试在同一个端口上托管完全不同的东西和/或从非标准端口托管相同的东西,看看是否会看到同样的问题。
- 虚拟机连接到网络的方式可能会影响其性能。通常,您将看到两个选项:NAT 或直接连接。使用 NAT,虚拟机位于主机 IP 后面的人工 IP 上。使用直接连接,机器将尝试模拟主机网络上的物理机器。直接连接路由通常看起来更好,但可能会成为不允许 MAC 欺骗或“伪造传输”的安全技术的牺牲品。尝试这两个选项,看看是否看到差异。
- 您的技术 (tomcat) 的默认页面与自定义代码的工作方式有什么不同吗?尝试使用其他技术(例如 nginx),看看加载方式是否不同。
- 你使用 Java 6 让我很难过。非常非常难过。请至少更新到 Java 8u241 或 Java 13(如果可以)。
- 我看到您提到了 WiFi。您的主机/虚拟机是否使用 WiFi 运行?尝试使用以太网直接连接到路由器,看看是否看到差异。
- 您是否能够毫无问题地在本地访问自己的服务器?使用外部 IP 怎么办?您是否尝试过类似https://isitdownrightnow.com或者https://translate.google.com看看你的页面是否在那里可用?可能你的同事的连接不太理想。