6

最近,我们的客户开始抱怨我们其中一台服务器的性能不佳。这包含多个大型 CMS 实施和许多使用 Sitefinity 的小型网站。我们的托管团队现在正试图找出我们环境中的瓶颈,因为加载时间存在一些重大问题。我的任务是指定一大堆需要注意的事项,分为不同的部分(IIS、ASP.NET、特定于 Web)。我认为最好根据 Sitecore 文档 ed 了解我们可以在一台服务器上运行多少个 Sitecore CMS 实例。我们希望能够监控并找出此时我们的瓶颈所在。我们的一些网站加载速度非常慢,而其他网站加载速度非常快。我们在此服务器上运行的大多数 Sitecore 实现的后端性能都很差,并且在编译后加载时间很糟糕。我们的 Sitecore 解决方案在带有 Microsoft SQL Server 2008 for db 的 Win 2008 64 服务器上运行。我知道指定有关我们的设置的更多详细信息可能很方便,但我希望我们能够获得一些有关如何监视和查找瓶颈的有用的基本信息

你有什么工具/提示/提示和技巧?

4

5 回答 5

5
  • 不要使用太多不同的 asp.net 池,在 plesk 中称为专用池。在同一个池中放置更多站点。
  • 更多内存,或停止服务器上未使用的程序/服务
  • 检查应用程序池是否有内存限制,使池继续自动重新启动。
  • 在数据库上,将恢复模式设置为简单。
  • 从程序内部收缩数据库文件和重新索引数据库
  • 毕竟对磁盘进行碎片整理

使用进程资源管理器检查内存。
要检查服务器的启动情况,请使用自动运行,但请注意不要停止任何关键服务,并且计算机永远不会再次启动。不要从自动运行中停止服务,使用服务管理器将类型更改为手动。如果您从未使用过它们,它们也不需要运行许多 sql 服务服务。

其他一些提示

  • 将临时文件 / 和可能的 asp.net 构建目录移动到不同的磁盘
  • 从临时目录中删除所有文件( cd %temp% )

使用进程资源管理器确保可用物理内存不为零。如果它接近于零,那么您的服务器需要内存,或者需要停止运行不使用的程序。

要将多个站点放置在同一个池下,您需要更改新共享池下站点的权限。这并不难,只需花一些时间组织一下,就可以知道哪个站点在哪个池下运行。现在假设您有 10 个站点,最好使用 2 个不同的池,并根据每个站点的负载将站点分布在这些池上。

于 2011-07-04T14:23:52.970 回答
2

Sitecore 性能调整没有直接的答案。但这里有一些重要的提示:

1) 缓存

缓存就是一切。默认 Sitecore 缓存参数很少适用于任何应用程序。如果你有很多内存,你应该增加缓存大小:

http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2009/07/CachingOverview.aspx

http://sitecorebasics.wordpress.com/2011/03/05/sitecore-caching/

http://blog.wojciech.org/?p=9

不幸的是,这是开发人员在部署安装时应该注意的事情,而不是系统管理员应该关心的事情......

2) 数据库

数据库是要检查的最后一个瓶颈。我很少接触数据库。但是,可以通过适当的设置提高数据库性能:

提高性能的数据库属性:

http://www.theclientview.net/?p=162

这篇关于索引碎片的文章很有帮助:

http://www.theclientview.net/?p=40

于 2011-07-05T12:24:08.427 回答
1

不能代表 Sitefinity,但会为 Sitecore 提供一些提示。

  • 尽可能使用 Sitecores 缓存,尤其是。在 XSLT 上(因为它们往往比布局和子布局更简单,因此 Sitecore 缓存不会破坏它们,就像 Sitecore 缓存对 asp.net 回发一样),这个 ofc 只有在大量访问重新设计和子布局等时才会有所帮助。使用 /sitecore/admin/stats.aspx?site=website 检查未缓存的内容
  • 使用 Sitecores 分析器,在分析器中打开一个项目并查看哪些子布局等需要时间
  • 仅将 XSLT 用于最简单的内容,如果它变得比它更复杂,我会选择子布局(asp.net 控件),这有点偏颇,因为我不喜欢 XSLT,但经验表明 .ascx 更快
  • 在静态文件上使用 IIS 的内容过期(可能是 /sitecore 的所有内容,如果您有一些图像、javascript 和 CSS 文件),这适用于 IIS 6:msdn 链接
  • 使用 Sitecore Databasetest.aspx 检查数据库访问时间(Sitecore 6 的一个比 Sitecore 5 和 6 上的那个简单得多)Sitecore SDN 链接

这就是我能想到的。

于 2011-07-04T15:58:18.103 回答
1

Sitecore 有一个重大缺陷,它使用GUID 作为主键(以及其他选择不当的数据类型),这会在第一次插入时对表进行碎片化,如果您有一个使用率很高的 Sitecore 数据库,则碎片化可能在一小时内超过 90%。这些不是一个精心设计的数据库,建议查看其他产品,直到他们解决这个问题,这给我们带来了主要的性能问题(时间和金钱)。我们处于停滞状态,我们无法再添加 RAM 无法更频繁地重建索引

于 2012-01-04T01:09:08.993 回答
0

此外,将您的 IIS 设置为每天在特定时间仅回收一次 app_pool。我通常将我的设置为凌晨 3 点。这样应用程序永远不会进入睡眠、回收等。最好减少启动时间。

此外,将 IIS 配置为“始终运行”而不是“启动时”。这样,当应用程序重新启动时,它会立即重新编译,并准备好咆哮。

Sitefinity 确实是一款很棒的软件(希望我上面的提示得到竖起大拇指,而不是我对产品的认可)。哈哈

于 2015-03-12T18:41:18.367 回答