22

我曾经在一次采访中被问到这个问题:

“假设您拥有一个网站,其服务器位于某个远程位置。有一天,一些用户致电/发送电子邮件说您的网站速度非常慢。您如何确定网站速度慢的原因?另外,当您自己检查网站时任何用户都会(使用您的浏览器),该网站表现得很好。”

我只能想到一件事(被击落):

  • 检查服务器日志以分析传入流量。可能是 DoS 攻击或异常高的流量。面试官告诉我假设服务器流量正常,没有 DoS。

我有点迷茫,因为我从来没有想过这个问题。我几乎不知道运行服务器/网站是如何工作的。因此,如果有人可以强调一些方法,那就太好了。

在谷歌搜索时,我只能找到这篇相关的、精彩的文章。那篇文章现在对我来说有点太技术性了,但我正在慢慢分解并理解它。

4

9 回答 9

17

由于您在自己检查网站时已经说过速度很好,这意味着(至少对于您检查的页面)服务器没有任何问题,它可以以良好的速度为这些页面提供服务。此时您应该弄清楚的是,您与报告您的网站速度慢的用户之间的区别是什么。可能有很多不同的东西:

  • 用户是否使用慢速网络连接(例如移动设备)?
  • 用户在同一虚拟主机上托管的其他网站是否遇到同样的问题?如果是这样,这可能表明存在网络问题。通常这也可能表明网络服务器存在资源问题,但在这种情况下,站点对您来说也会很慢。
  • 如果以上都没有导致答案,您可以假设与服务器的连接和服务器本身都很好。这意味着问题必须在用户设备中。找出他使用的浏览器/操作系统并尝试复制问题。如果失败,请查明他是否使用了任何可能导致问题的防病毒软件或类似软件。
于 2013-03-27T18:01:22.813 回答
8

这是一个很好的工具来查找网页的速度并告诉你是什么让它变慢:https ://developers.google.com/speed/pagespeed/insights

于 2013-03-27T05:49:30.383 回答
4

我认为上述答案中缺少的重要一点是服务器位置,它对 Web 性能至关重要。

当有人说打开网页需要更长的时间时,这意味着高延迟。服务器位置可能会导致高延迟。假设您是网页的所有者,那么服务器和客户端位于同一位置,因此延迟较低。

但是,现在如果客户端越过边界,那么延迟时间将急剧增加。因此性能缓慢。

另一个因素是缓存,它极大地影响了延迟时间。

以 facebook 为例,他们在世界各地都有服务器以减少延迟时间(并提供其他几个优势),他们使用巨大的缓存系统来缓存他们的热门数据(热门话题)而冷数据(旧数据)是存储在硬盘中,因此加载较旧的照片或帖子需要更长的时间。因此,用户可能会在尝试加载一些冷数据时抱怨这一点。

于 2016-04-13T05:29:11.417 回答
2

我能想到这几个原因(前两个上面已经提到过):

  1. 由于客户端位置的高延迟
  2. 服务器内存可能需要增加
  3. 来自页面的服务调用次数。
  4. 如果在投诉时服务可能会关闭,它可能会阻止页面加载。
  5. 体验不佳时服务器负载可能过高。服务器可能需要增加资源(例如向集群添加另一个服务器/Web 服务器)。
  6. 检查当时服务器上是否有任何后台作业正在运行。

检查批处理作业的日志和计划以确定当时正在运行的内容非常重要。

希望这有帮助。

于 2017-02-02T20:20:55.293 回答
1

显然,连接到您网站的人的连接存在问题,或者这可能是一个暂时的问题,当您检查您的网站时,一切都很好。您可以检查您的日志或询问您的主机在发生减速时是否存在问题。

于 2015-04-14T16:38:11.613 回答
1

一个原因可能是用户的角色与您的角色不同。您可能假设拥有管理员权限(例如超级用户角色),并且代码可能只是允许此类角色的所有内容,这意味着它实际上并没有做太多的条件检查来查看允许或不允许的内容。有时,获得用户的所有权限并进行条件检查是相当超前的,当然取决于如何实施授权。这意味着,对于特定角色,页面可能真的很慢。因此,您应该找出用户的角色,看看这是否是一个原因。

于 2014-04-27T17:26:27.520 回答
1

通常,用户将页面加载时间作为衡量网站是否运行缓慢的指标。但是如果你真的想知道什么是最长时间,你可以按 f12 打开浏览器调试器。如果您的浏览器是 chrome,请点击网络并查看您的应用程序正在进行哪些调用以及哪些调用需要最长时间。如果您使用的是 Firefox,则需要安装 firebug。如果有,请再次按 f12 并单击 Net。

于 2013-03-27T05:50:08.807 回答
0

尽管您的问题很清楚,但网站优化是一个非常广泛的主题。

大多数流行的 Web 开发框架由于某种原因,处理器效率极低。

开发 n 层 Web 应用程序的老式方法仍然非常重要,并且仍然被认为是 W3C 的最佳实践。如果您花一点时间阅读最流行的 Web 开发框架的源代码结构,您会发现它们在服务器上运行的代码比所需的要多得多。

这似乎是一个简单的答案,但是,您在服务器上运行的代码越少,在客户端运行的代码越多,服务器运行的速度就越快。有时将框架代码与老式方式进行对比是了解这一点的最佳方式。这是一个完整工作的迷你 Web 应用程序的链接,它代表 W3C 最佳实践,在服务器上运行最少的代码,在客户端运行最多的代码:http: //developersfound.com/W3C_MVC_EX.zip这个代码库是也符合 MVC。

该代码库带有 MySQL 数据库转储、php 和客户端代码。要查看此代码的运行情况,您需要将 SQL 转储恢复到 MySQL 实例(sql 转储来自 MySQL 8 社区)并添加在 php 文件 (conn_include.php) 中找到的用户和模式权限;将用户设置为对架构具有执行权限。

如果您将此代码库与所有最流行的 Web 框架进行对比,您会真正看到这些框架是多么低效。声称是 MVC 框架的流行 PHP 框架实际上根本不兼容 MVC。这是因为它们依赖于将 PHP 标记嵌入 HTML 标记或反之亦然(根据 W3C 被认为是非常糟糕的做法)。此外,大多数流行的节点框架在服务器上运行的代码比所需的要多。除非框架支持 AJAX 转储,例如 Yii 2,否则嵌入式标签也会阻止异步调用正常工作。

遵守 MVC 的两个最重要的规则是:永远不要在 HTML 标签中嵌入服务器端标签(例如 PHP 标签)或反之亦然(除非有很好的借口,例如 SEO),并且从不编写代码来运行如果它可以在客户端运行,则在服务器上。同样,真正的 MVC 基于层分离,而 MVC 框架基于代码分离。真正的 MVC 合规性是非常高效的处理器。不要误解我的意思 MVC 框架对很多事情都非常有用,但是如果你正在开发一个将获得数百万点击的网站,它们就毫无用处,或者至少它们会让你的云计算费用如此之高它真的会侵蚀你公司的利润。

总而言之,框架对在客户端或服务器上运行的代码没有给予太多控制,而且效率非常低,但是您可以用更少的代码更快地启动和运行原型。

相比之下,老式方式需要更多的麻烦,但您可以完全控制在服务器上运行的内容和在客户端运行的内容。

作为优化的附加建议,请避免使用传递查询和触发器,而是选择存储过程。历史上存储过程在 MVC 作为一种范式出现时并没有被发明出来,但它确实增加了层之间的关注点分离,并且处理器效率更高。

希望这个建议有帮助。

于 2019-06-02T23:02:23.903 回答
0

这通常是内存问题,可以通过增加托管应用程序的 Web 服务器的堆大小来解决。如果应用程序在 Weblogic Server 上运行。堆大小可以在位于应用程序主页的“setEnv”文件中增加。祝你好运!迈克尔·奥雷贝

于 2015-11-20T02:09:23.450 回答