Sitecore仅发布到两个服务器之一

时间:2011-05-09 15:41:33

标签: .net sitecore

我遇到Sitecore(6.1.0)的问题,只是将项目发布到我们的两个Web服务器之一。

不幸的是,我仍然是Sitecore的新手并且还没有完成培训(虽然它很快就会发生!)所以我对Sitecore如何工作的了解是有限的(我也是这个项目的新手,所以不熟悉它是如何设置的)。请耐心等待,因为我确信我错过了检查明显的事情或遗漏了重要信息。

基本上发生的事情是客户试图发布一个项目但在实际网站上看不到它们(他们试图发布至少两次)。我检查了网络数据库,它就在那里,然后登录到两个网络服务器,在那里我可以看到它工作在一个而不是另一个。我后来再次发表,然后我可以在两者上看到它,但我不确定它是不是巧合。据我所知,此事以前没有发生,但我不能确定。没有错误消息,我想它可能发生在之前,但是客户端没有注意到它们已经得到了它所使用的服务器。

我想了解为什么会发生这种情况,并且显然会试图阻止它在未来发生!如果有人有任何想法,我将非常感激。

我检查了日志,这是我第一次发布的条目:

4764 11:15:07 INFO  AUDIT (sitecore\admin): Publish, languages:en, targets:Internet, databases:web, incremental:false, smart:true, republish:false, children:true
ManagedPoolThread #16 11:15:08 INFO  Job started: Publish
ManagedPoolThread #1 11:15:08 INFO  Job started: Publish to 'web'
ManagedPoolThread #1 11:15:08 INFO  HtmlCacheClearer clearing HTML caches for all sites (1).
ManagedPoolThread #1 11:15:08 INFO  HtmlCacheClearer done.
ManagedPoolThread #1 11:15:08 INFO  Staging server found: Web1
ManagedPoolThread #1 11:15:08 INFO  SourceDatabase: master
ManagedPoolThread #1 11:15:08 INFO  TargetDatabase: web
ManagedPoolThread #1 11:15:08 INFO  Staging server found: Web2
ManagedPoolThread #1 11:15:08 INFO  SourceDatabase: master
ManagedPoolThread #1 11:15:08 INFO  TargetDatabase: web
ManagedPoolThread #1 11:15:08 INFO  Job ended: Publish to 'web' (units processed: 2)
ManagedPoolThread #16 11:15:08 INFO  Job ended: Publish
ManagedPoolThread #14 11:15:10 INFO  Job started: Sitecore.Modules.Staging.StagingAgent
ManagedPoolThread #17 11:15:10 INFO  Starting update of index for the database 'master' (2 pending).
ManagedPoolThread #14 11:15:10 INFO  Partial cache cleared on Web1
ManagedPoolThread #14 11:15:10 INFO  Staging on server Web1 finished
ManagedPoolThread #17 11:15:10 INFO  Update of index for the database 'master' done.
ManagedPoolThread #14 11:15:10 INFO  Partial cache cleared on Web2
ManagedPoolThread #14 11:15:10 INFO  Staging on server Web2 finished
ManagedPoolThread #14 11:15:10 INFO  Job ended: Sitecore.Modules.Staging.StagingAgent

我还比较了Web1和Web2上的web.configs,它们是相同的。不知道接下来要检查什么。

更新:这是来自Web服务器上的日志文件。

没有显示页面的那个:

2180 11:15:01 WARN  Memory usage exceeded the MemoryMonitor threshold.
2180 11:15:01 WARN  Memory usage: 2,058,067,968
2180 11:15:01 WARN  Number of suppressed logs due to the minimum time between log entries: 5
4624 11:15:10 INFO  DEBUG: STAGING History storage entries grouped: 0
4624 11:15:10 INFO  DEBUG: STAGING History storage entries grouped: 0
2180 11:16:11 WARN  Memory usage exceeded the MemoryMonitor threshold.
2180 11:16:11 WARN  Memory usage: 2,060,402,688
2180 11:16:11 WARN  Number of suppressed logs due to the minimum time between log entries: 6
4968 11:16:37 INFO  HttpModule is being initialized

显示页面的那个:

776 11:15:08 ERROR Announcement Error
Exception: System.IndexOutOfRangeException
Message: Index was outside the bounds of the array.
Source: 

 776 11:15:10 INFO  DEBUG: STAGING History storage entries grouped: 0
 776 11:15:10 INFO  DEBUG: STAGING History storage entries grouped: 0
3308 11:15:35 WARN  Memory usage exceeded the MemoryMonitor threshold.
3308 11:15:35 WARN  Memory usage: 2,632,605,696
3308 11:15:35 WARN  Number of suppressed logs due to the minimum time between log entries: 6
3308 11:15:45 INFO  Health.PrivateBytes: 2,632,630,272
3308 11:15:45 INFO  Health.CacheInstances: 654
3308 11:15:45 INFO  Health.CacheTotalCount: 332,491
3308 11:15:45 INFO  Health.CacheTotalSize: 417,760,120
3308 11:15:45 INFO  Health.Counter('Process\Private Bytes'): 2,632,630,272
3308 11:15:45 INFO  Health.Counter('Process\Virtual Bytes'): 5,925,634,048
3308 11:15:45 INFO  Health.Counter('Process\Page File Bytes'): 2,632,630,272
3308 11:15:45 INFO  Health.Counter('.net CLR Memory\# Bytes in all Heaps'): 1,568,948,208
3308 11:15:45 INFO  Health.Counter('.net CLR Memory\% Time in GC'): 1,080,607
3308 11:15:45 INFO  Health.Counter('.net CLR Memory\Large Object Heap size'): 343,910,104
3308 11:15:45 INFO  Health.Counter('.net CLR Loading\Bytes in Loader Heap'): 15,257,600
3308 11:15:45 INFO  Health.Counter('.net CLR Loading\Current Assemblies'): 107

不确定异常是否与它有关,因为它是在正确发布的服务器上抛出的? (同样的例外在两台服务器上都抛出了几次。)

谢谢,

Annelie

3 个答案:

答案 0 :(得分:2)

我建议您查看Staging模块的文档。这是Sitecore 6.0-6.2 (PDF link)

我认为我在登台模块中遇到的最大问题之一是HistoryEngine的正确配置。这有助于Sitecore跟踪发布的内容并有助于缓存清除。在我的情况下,它需要Lucene索引更新,但它对于缓存清除机制也很有用。

直接从上面的链接文档中总结出来:

在您的内容管理服务器和slave prod服务器上,确保它位于实时网络数据库下的web.config(例如本例中的webtarget):

<database id="webtarget">
  <Engines.HistoryEngine.Storage>
    <obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">
      <param connectionStringName="$(id)" />
      <EntryLifeTime>30.00:00:00</EntryLifeTime>
    </obj>
  </Engines.HistoryEngine.Storage>
</database>
...
<hooks>
  <hook type="Sitecore.Modules.Staging.InitializeEngines, Staging.Kernel" />
</hooks>

答案 1 :(得分:0)

您可以在未显示更新的服务器上尝试AppPool回收。我们之前发生过类似的事情。

如果您升级到Sitecore 6.3,我认为缓存机制已得到改进,他们绕过缓存并查看分发表,以查看项目更改,以便他们知道何时刷新缓存。

答案 2 :(得分:0)

可能有任何原因发生这种情况,如果他们试图检索的数据依赖于基于Lucene引擎的搜索功能,那么这可能是索引问题。

确保在发布项目时自动重建索引。仔细检查web.config计划时间,还要验证CD(内容交付)实例上的设置是否正确: Indexing.UpdateInterval Indexing.UpdateJobThrottle

请参阅sdn.sitecore.net上提供的ScalabilitySettings文档。 如果您仍在Sitecore 6.1.0上 - 那么在发布到多个CD实例时会出现一个常见问题,即使您设置了处理程序,也不会自动清除缓存

<event name="publish:end:remote">
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
      <sites hint="list">
        <site>website</site>
      </sites>
    </handler>
  </event>

要解决该问题,请将您的版本更新为6.6.0更新5 - 最稳定或从共享源下载Stager模块。这将解决发布和缓存的问题。