EPiWiki.se  - EPiServer notes shared with others
 

Troubleshooting a multi site using remote events over UDP broadcast

[Edit]
Problem description: The web site goes slow and output cache doesn’t seem to work. And the site take a very long time to start.

Environment


Two web front servers, two backend servers used for editorial work in the CMS. All the machines are connected to use remote events over UDP broadcast.
EPiServer CMS 6 R2 (multi site with nine sites) + Community 4

Solution


The WCF configuration was wrong, so the four sites send nine equal events to all other machines using UDP broadcast.
Other websites on the same machine using the same port for remote events.
An issue in PageType builder forces saving of page types when the server starts up – this will make all machines clears the cache when it’s recycled.

References


Set up remote event over UDP broadcast
EPiServer remote events troubleshooting with iperf

Trouble shooting


Change EPiServer log level to DEBUG.
In the log files there exist several log messages on the form

2011-12-14 09:49:50,119 WARN [11] EPiServer.Events.Remote.RemoteEventsManager.CheckEventSequences - An event of type ec08ca8d-b142-4144-8602-78d41cca737c has been missed

This means that the servers don’t get all remote events, and the servers will clear the cache to ensure that the machines cache is up to date.
When investigating the event log further, it is possible to see that every event is send nine times from the same site with the same sequence number.

... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...
... DEBUG ... siteId:site1 sequenceNumber:6 ...

After investigated the configuration

<configuration>
  <system.serviceModel>
    <services>
      <service...name="site1/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site1"
      <service...name="site2/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site2"
      <service...name="site3/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site3"
      <service...name="site4/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site4"
      <service...name="site5/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site5"
      <service...name="site6/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site6"
      <service...name="site7/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site7"
      <service...name="site8/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site8"
      <service...name="site9/EPiServer.Events.Remote.EventReplication">
        <endpoint name="site9"
 ...
    <client>
      <endpoint name="Site1"...
      <endpoint name="Site2"...
      <endpoint name="Site3"...
      <endpoint name="Site4"...
      <endpoint name="Site5"...
      <endpoint name="Site6"...
      <endpoint name="Site7"...
      <endpoint name="Site8"...
      <endpoint name="Site9"...

When using remote events over UDP broadcast on a multi site installation, only one WCF server endpoint and one client endpoint address needs to be configured (without any site specification). This is because all sites will read their own configuration when it starts up.

<configuration>
  <system.serviceModel>
    <services>
      <service name="EPiServer.Events.Remote.EventReplication">
        <endpoint name=" MultiSite"
                  address="soap.udp://239.255.255.19:5001/RemoteEventService"
                  binding="customBinding"
                  bindingConfiguration="RemoteEventsBinding"
                  contract="EPiServer.Events.ServiceModel.IEventReplication" />
    <client>
      <endpoint name="MultiSite"
                address="soap.udp://239.255.255.19:5001/RemoteEventService"
                binding="customBinding"
                bindingConfiguration="RemoteEventsBinding"
                contract="EPiServer.Events.ServiceModel.IEventReplication" />

EPiServer community forces all servers to been set up with remote events, and it uses it a lot (the remotes events are written for CMS content and more or less forced to be used by community).
After some more investigation of the log files the following message is located

...DEBUG ... ReceiveEvent ... parameter:EP:PageType

This will case EPiServer to clear the cache, and is caused by PageTypeBuilder when the sites starts up.
Version author:
Mattias Lövström

EPiServer version

'CMS 5 R1' 'CMS 5 R2' 'EPiServer CMS 6''EPiServer 7'