Minimal Impact of Administrative Actions on BOXI
I would like to think that I am unique in many ways, but I think that I am very similar to others when it comes to my desire to minimize the impact of my administrative actions on my Business Objects XI instances. One way that I accomplish this is to carefully shutdown Business Objects servers in a very particular and simple manner.
Changes to Web Intelligence Report Server Require Restart
From time to time we all make changes to our Business Objects environment. Frequently I find myself making changes to the the Web Intelligence Report Servers (WIRS). Whether it is tweaking command-line parameters, CMC properties, logging status, making some obscure registry setting, or even patching DLLs; I am changing my WIRS and I need to restart it in order for the change to take effect. In some cases, my client runs 24/7 and has no real downtime and in other cases I need to make the change immediately and I need them to take effect yesterday. 😉
The Cleanest Restart You Can Ever Perform
In most cases the changes I make will not take effect without a restart. However, if I go directly to the Central Configuration Manager (CCM) and just stop the server(s) and then restart it, any reports (edits, paging, refreshes, etc.) will fail on the user’s side (or for the scheduled job). So what can I do to guarantee this does not happen??? Disable the server. Wait. Stop server. Restart Server. Enable the server.
Detailed Cleanest BO Server Stopping Procedure
- Disable the server: do this either in the Central Management Console (CMC) or in CCM, which ever you prefer, but I think that internally BO engineers prefer to use the CCM (its the icon with the cylinder and check mark).
- Wait: there is no golden rule on how long to wait, any amount of waiting is still better than none. During this period the server is finishing whatever work it was assigned and the CMS is not assigning it any new requests. You can observe this on the metrics tab of the CMC page for the server (if your server has metrics). I generally wait 30 minutes and I watch the CPU utilization (CPU time) of the WIRS’s process (yes, in Windows) to see that it is dormant.
- Stop the server: this one is easy. Just go to the CCM and stop the server you are targeting. You can do this from any server in the cluster. You should watch the executable to be certain that it goes away, disappears, or dies.
- Restart the server: Again stay in CCM, allow for at least 15 seconds from the stop, but this will depend a lot on how long you waited since the disabling of the server, I mean if it still has any active threads it will take longer to stop (see previous step for proper shutdown before restart). Allow the server to get fully started and registered with the CMS.
- Enable the server: again use CCM or CMC to do this. I suggest you make sure the server is started for a period of 30 seconds before you enable it and let the CMS have it back for abuse.
Note: I believe this same technique should work well for all Business Objects server, not just Web Intelligence Report Servers.
Please let us all know if you have any comments, suggestions, or anything else on your mind loosely related to this topic by leaving a comment.
I have some queries regarding the above procedure. If you disable the server, the issue would be server will not take any further requests although it process already finish off all the existing requests. This means that whoever trying to process any report may get some warning or error. If we disable and wait for 30min how these requests can be taken care?
If possible, its always better to restart all the services once in a day. This will refresh all the services. This can be scheduled through Windows Scheduler. But there is a specific order to restart all the services.
If you disable a WebI Report Server and you wait long enough all of the requests will resolve and the server will become dormant. Unfortunately, this could take hours (I have tested it) based on your user’s workflows (keep Java Report Panel open for hours of non-stop work) and your different session timeouts (cleaning up requests of users who don’t log out). Nevertheless it does work.
A daily restart is really not impact free. What about scheduled jobs that could be running? If you did do this, disabling first and then restarting would always be best. We have proven that many times in production.
Then I would suggest the best possible way is to get downtime from users and restart the services. But My question is as soon as you disable say many users try to access or process reports. What will happen to those requests?
Though we are talking about Reporting tool there is another aspect comes into picture since we query a datawarehouse. Its none other than daily data loads. During this time querying the table is really not the best practise. This will really slow down the data loading as well as querying, finally creating deadlocks. So we give users a Window to use the reporting tool and as soon as the data load starts we down all the services. All the next day schedule automatically starts as soon as we up all the services. This may be project specific, but still i see many of the people does this.
Your question makes me think that I may not have stated that this technique was best used in a “rolling” restart of WebI Report Servers. Those request coming in from users that have either lost their session or closed their previous reports will go to other WebI Report Servers. So you need to be sure that you reserve enough capacity of handle these, of course. However, if the user continues to edit the same report then most likely all requests will go to the same WebI Report Server. Refreshing is different, in that as fas as I know each request to refresh is assigned a new WebI Report Server at the click of the “refresh” button.
This is an excellent point that I have never touched on. It is a very difficult matter when you have a global user base (usually the best down time is late afternoon in Pacific time, in such cases). It would be nice if you could easily suspend activity based on a time schedule. This would be a great enhancement from SAP Business Objects.
Thanks for your clarifying the points. Now we both are in same page:)
You are absolutely right, if we have an additional Webi Report Server to handle the new loads we can do it as suggested by you.
In our project what we do is our all data loads starts in the evening. So before the main loads starts, all the BOXI services will go down. As soon as it completes, it will start. This happens early morning. This activity is done with the help of a script. We are using “Net Stop” as well “Net Start” commands. This schedule is known to all users, so no issues
Can any one of you please let me know the correct way of stopping and starting the BO Servers?
I think this topic deserves its own article. I have consulted with my SAP-BO engineers and the following is the product of those discussions. It is surprising how little info there is on this topic:
Shutdown your servers in this order (use the clean/disabled method if possible for each):
1) Stop your web servers first. This will cut your users off and stop them from getting strange errors.
2) Stop Event Servers
3) Stop Job Servers
4) Stop Report Servers
5) Stop all other non-CMS servers
6) Stop CMS servers
If you do things in this order you will find that the CMS will stop more quickly and cleanly.
Start up should pretty much be the reverse. As I said before, I will dedicate an article to this and put more details there.
Thanks for asking for this! Julian
Pingback: Best Method to Stop, Start, Restart Business Objects XI Servers or Services | Business Objects Tips
As promised here is the link to the new article:
Cleanly Stopping and Starting Business Objects Servers
I want to know how to schedule the same report at same time with different destination filesystems.
For Exampla : Report A : –> Need exported file copy in 2 different Locations :
Thanks in Advance.
This comment is quite off-topic, but I’m curious why it would not work to schedule the report once for your first destination and then reschedule it for all of the same parameters and change only the destination? Yes, this would run the report twice, but it would still work. There may be a way to do this with Business Objects XI 3.1’s publisher, but I’m not sure.
In step 2 of “Detailed Cleanest BO Server Stopping Procedure”, do you really mean to wait 30 minutes and not 30 seconds?
Hi Lauri, yes, I mean 30 minutes. You are waiting for all of the work to finish on the server. Users could be refreshing a report or working in Java Report Panel or just viewing a report. You could even wait longer. This is graceful, not quick.
As part of Cleanest Method to Stop a Business Objects Environment, first we need to disable the all the servers in below sequence and then stop in servers in below sequence order right?
All other non-CMS servers
Yes, Naren. That is the very best sequence. Strange, I can’t understand why I left out that important detail. Thank you!