我在我们制作的网站中遇到了性能问题,我不确定如何开始诊断它。
简短的描述是:我们有一个非常小的站点(http://hearablog.com),流量很少,在一个糟糕的专用服务器中,CPU 总是很高,有时它会保持 100% 几分钟,还有 w3wp.exe正在服用大部分。一个典型的场景是 w3wp.exe 占 60%,SQL Server 占 30% 左右。我们的数据库也很小。
详细说明和更多详细信息:
该站点由 Cari.Net 托管在一个非常糟糕的服务器中。从一开始我们就觉得服务器的行为不太正确,就像有些事情会花费太长时间,所以这可能是从一开始的配置问题。这可能也是我们得到了一个虚拟服务器,而我们应该有一个专门的一个,虽然我们没有证据说会中指出,除了服务器往往是相当缓慢的事实。
服务器是 Windows 2008 Standard 64 位,带有 SQL 2008 Express
硬件是 Celeron 2.80 GHz,1Gb RAM
该网站采用 ASP.Net MVC 开发,使用实体框架进行数据访问。
现在,这是非常糟糕的硬件,但我和这些家伙一起使用过其他服务器,具有相同(或更差)的硬件,并且性能比这好得多。也就是说,其他服务器有 W2003 和 SQL2005,我使用的是 ASP.Net“WebForms”2.0,没有 MVC,没有 LINQ,没有 EF;所以我不确定去 2008 年/其他东西是否意味着预计会有很大的性能损失。
我定期提供 MP3 文件(5-20 Mb),这是一个稍微不寻常的负载,也许这会导致某种问题?
这会导致 w3wp 使用大量 CPU 吗?
磁盘使用率似乎很低。内存通常在 90% 左右,但磁盘使用率似乎表明它没有太多分页。
我每天都会收到大量关于 SQL 超时的电子邮件,查询时间超过 30 秒,尽管我们所有的查询都非常简单(或者应该是,但 EF 可能把它搞砸了)。
这就是资源监视器在这些 100% CPU 的“冲刺”之一中的样子,以防万一那里有任何有用的东西。

以及一些性能计数器的快照:

现在,让我非常困惑的是 w3wp 的 CPU 使用率是如此之高。它真的不应该做太多......所以我的问题是...... …
我有一个网站,它为 PHP 请求发送“缓存控制”和“pragma”HTTP 标头。
我没有在代码中这样做,所以我假设它是某种 Apache 配置,正如这个问题所建议的那样(对于这个问题的上下文,你真的不需要去那里)
我的 .htaccess 文件中没有任何内容,所以它必须在 Apache 的配置中,但我无法访问它,这是一个共享主机,我只能通过 FTP 访问我的网站目录。
有什么方法可以将指令添加到我的.htaccess 文件中,以删除全局配置添加的标头,或者以其他方式覆盖该指令,以便它们不会首先添加?
非常感谢
丹尼尔
我正在尝试将我从托管公司获得的 MySQL 转储文件导入我的 Windows 开发机器,但我遇到了问题。
我正在从命令行导入它,但出现了一个非常奇怪的错误:
ERROR 2005 (HY000) at line 3118: Unknown MySQL server host '??*á±dÆ?N?Æ·h^ye"??i? Z+-$???Y.??|??l?/l ??î7æ?X?XE.º?[;?ï?éµ?º???].???9dë??'?ÿG??0à¡úè???ù??¥'?NÑ' (11004) )

我附上截图是因为我假设二进制数据会丢失......
我不太确定问题是什么,但两个潜在的问题是文件的大小 (2 Gb),它不是特别大,但也不是特别小,另一个是这些表中的许多都有其中的 JPG 图像(这就是为什么文件在大多数情况下是 2Gb 大的原因)。
此外,转储是在 Linux 机器中进行的,我正在将其导入 Windows,不确定这是否会增加问题(我知道不应该)
现在,二进制垃圾就是我认为文件中的图像可能有问题的原因,但我过去能够从同一托管公司导入类似的转储,所以我不确定可能是什么问题。
此外,考虑到它的大小,试图查看这个文件(尤其是第 3118 行)是不可能的(我对 Linux 命令行工具如 grep、sed 等不是很方便)。
该文件可能已损坏,但我不确定如何检查它。我下载的是一个 .gz 文件,我用 WinRar“测试”了它,它说它看起来不错(我假设 gz 有某种 CRC)。如果你能想到更好的方法来测试它,我很乐意尝试。
任何想法可能会发生什么/如何克服这个错误?
我对数据并不是特别感兴趣,因为我只想将其作为开发人员的副本,所以如果我不得不丢失一些记录,我可以接受,只要模式保持完美。
谢谢!
丹尼尔
我正在运行具有 3 个数据库实例的服务器。
现在,当我打开 Management Studio 时,它会打开“连接”提示,让我选择我想要的实例(或连接到其他任何东西)。
是否有可能拥有它,以便当我打开它时,它已经连接到这 3 个实例,因此我可以立即开始工作并保存几次点击?老实说,它每天可以为我节省数百次点击。
这相当于我们在 SQL 2000 企业管理器中所拥有的,您可以在其中“注册”服务器,并且它们总是在那里,只需单击一下即可。
编辑:澄清我在寻找什么......在我们拥有企业管理器和查询分析器之前。现在 SSMS 是这两者的混合体,但“连接”部分的工作方式与查询分析器完全一样。
我每天做的是打开 SSMS 来管理数据库,检查它们的统计信息,到处重建索引,我没有用它来运行那么多查询,所以我正在寻找一种方法来让 SQL 实例可用登录时自动在对象资源管理器上。现在这是不可能的吗?:-(
这里有人可以向我解释这个词的含义吗?(我已经看到 3 个术语提到的同样的事情)。
起初,当我读到它时,出于某种原因,我明白这是在磁盘的盘片上拆分字节的某种方式,这听起来是个好主意,显然没有意义,因为那不会切割磁盘大小减半(并且磁盘可能已经在盘片之间拆分字节)...
我所理解的最好的一点是,基本上不是为整个磁盘大小创建一个分区,而是创建 2 个分区,并且只使用其中的一个,要么位于“中心”,要么位于“盘的边缘”,并且由于两者之一更快(人们似乎不同意哪个更快),这使一切变得更好。
我理解正确吗?
有没有人用他们的驱动器尝试过这个并且有一个好的结果?
谢谢!
我有一个从批处理文件运行的进程,我只想在一周中的某一天运行它。
是否有可能获得星期几?
我发现的所有示例都以某种方式依赖“date /t”返回“Friday, 12/11/2009”,但是,在我的机器中,“date /t”返回“12/11/2009”。那里没有工作日。
我已经检查了我机器的“区域设置”,长日期格式确实包括工作日。短日期格式没有,但我真的不想改变它,因为它会影响我做的很多事情。
我需要设置一个本质上具有非常大容量的 SFTP 服务器。我需要向我们的合作伙伴之一提供 SFTP 登录详细信息到服务器,他们将在其中上传数百万个文件,总计数百 TB。然后我会选择性地阅读其中的一些文件。这是唯一的实际要求,任何技术选择都可供选择。
我想到的最简单的方法是让某种 EC2 实例运行 SFTP 服务器,这样上传的任何内容要么直接发送到 S3,要么某种进程在上传时发现新文件,将它们复制到S3,并从磁盘中删除它们。
这是最好的方法吗?有没有其他方法可以获得基本上具有“无限且神奇增长的磁盘空间”的服务器?
谢谢你的帮助!丹尼尔
我有一个网站托管在 Apache(在 Windows 上),我想保护它,以便任何人进入都需要输入密码。这并不意味着要成为安全堡垒,我知道这很糟糕,但总比没有好,而且我不想通过任何可以使其更安全的替代方案(它们确实不值得为了这)。
我想要的是弹出典型的 HTTP 身份验证对话框,要求访问者输入密码。每个人都将拥有相同的密码。事实上,如果我可以将用户名设为空白,那就太理想了。否则,每个人都将拥有相同的用户名。
你能告诉我我该怎么做吗?我发现的所有教程都是针对更高级的用例,其中使用了机器的实际用户/密码。
是否可以将其设置为文件中的硬编码密码?还是我需要创建一个 Windows 用户?
我正在测试我对某些代码所做的某些更改是否有效。为此,我需要知道文件系统缓存通常是如何工作的。我假设我们得到的是默认值,因为我们可能没有对此进行任何有趣的调整。
本质上,如果我从我的代码中询问“这个文件是否存在?”,答案会在“x”毫秒后返回。如果我后来又问了几分钟,答案回来了,多快,所以我猜有一些缓存对那里发生的。
如果我想再次测试并刷新缓存,我应该等待多长时间,所以它会再次花费“很长时间”?(我想看看我是否修复了我的网络应用程序中的性能问题,但我只能知道它是否已修复,如果有关文件存在的信息未缓存,因为如果缓存,它确实运行得很快)
我知道这不是最有说服力的问题,答案可能是“视情况而定”,我要求的是理智的默认。换句话说,如果我在 3 小时或 6 小时后再次测试,我可以指望它不会被缓存吗?
据我所知......这是一个 Ubuntu 服务器,内核版本:3.9.3-x86-linode52,Ubuntu 版本:Ubuntu 12.04.3 LTS,托管在 Linode 上。文件系统是ext3
谢谢!
丹尼尔
apache-2.2 ×2
performance ×2
windows ×2
.htaccess ×1
amazon-ebs ×1
amazon-s3 ×1
asp.net-mvc ×1
batch ×1
binary ×1
cache ×1
date ×1
filesystems ×1
hard-drive ×1
http-headers ×1
iis ×1
import ×1
linux ×1
ms-dos ×1
mysql ×1
password ×1
remove ×1
sftp ×1
ssms ×1