Caching issues across multiple servers
Hi,
Simple scenario: I have a Sitefinity app deployed on 2 servers.
If I create or modify content on one server, it's not visible on the other server (if the app was already started on this server), because although it uses the same database, it holds onto its cache, and doesn't check whether the cache is obsolete.
Shouldn't Sitefinity check cache dates, and automatically update the cache in such cases?
For example: if news item publication date is newer than news item cache date, then regenerate the cache?
Anyway, how are we supposed to handle this? What are the solutions?
Thanks.
Hi Thomas,
With your current setup there is no way that Sitefinity will know that it is set up under a multiple servers scenario. Since each server has its own output cache Sitefinity must know each server so that it can notify them to clear the cache for an item if the cache is no longer valid. To be able to do this you must set up the project as if it is running in a load balanced solution. Then, since you are going to tell Sitefinity which are the server nodes it will be able to use MSMQ to notify each server for changes in the items.
All the best,
Radoslav Georgiev
the Telerik team
Hi Radoslav,
Thanks for your answer.
Just checking I understood correctly: the load balancing system in Sitefinity (as you can configure it from Administration / Settings / Advanced) is designed to work MSMQ, right? I'm not familiar with MSMQ, but from what I understand, it's available by default on Windows Server. I'm not sure whether it's enabled by default, though. I'll check with our server team.
Thanks again.
Hi,
Yes you are correct we are using MSMQ and it should be supported by the server by default. Since the communication between the server nodes goes through HTTP port 80, please make sure that the server nodes in the web farm can communicate with each other.
Furthermore please check how the load balancing URLs are configured in the system settings. It is important that the the Licensing module can validate them. For example if my website is registered for sitefinity.com domain I am safe to use addresses such as:
webfarmnode1.sitefinity.com, webfarmnode2.sitefinity.com or the internal IP address of the server node. Note that those address should not be accessible from the outside world.
If you are using addresses such as the machine name (http://webfarmnode1), please contact our sales team so that they can issue a domain alias for all the nodes in the web farm.
Greetings,
Radoslav Georgiev
the Telerik team
Hi Radoslav,
Domain name licenses should not be an issue, as all our URLs are under the same main domain (so our setup is like: mysite.mydomain, then server1.mydomain, server2.mydomain, etc). They are all accessible if you know the URLs, though (but this is an intranet site, not an internet one). Is that a problem?
Our site is not on port 80 though (but 85), so is that a problem since MSMQ has to use port 80? Or will our site just work although it uses two different HTTP ports?
Thanks for your help.
Hello,
Can you try verifying that MSMQ works by following this article: http://resources.arcfmsolution.com/CommunicationIssues.html?
All the best,
Radoslav Georgiev
the Telerik team