As software developers, some of you possibly had not considered a few things when designing, debugging and testing on single user systems:
- Most business environments are open around 250 days a year. (52 x 5 - 10). We have approximately 750 users. Let's assume that a known issue is in a software package, but considered minor because it only happens once a year. If this issue requires a call to our support staff, we instantly have 3 calls a day. (750 / 250)
- If a condition is left in a software package that locks a NFS drive, or other issue that requires a reboot, we have to schedule this and then kick people off the server during a time that was not pre-scheduled. It's not just an issue of rebooting your local computer. There are multiple users on servers 24 hours of the day, and it's always a bad time for someone.
- If a software package is leaking memory, and let's assume that it's 50MB a day. Your first thought might be that 50MB is no big deal, and cheap and certainly not a problem. For instance, on our Evolution server, we are running about 210 concurrent users. A 50MB a day memory leak then suddenly becomes a bigger problem.
- File handles can become a problem if they leak. It really helps to consider hundreds of people running a software package rather than just one person. At a certain point there will be problems and tuning issues with Linux with file handles. Often, this shouldn't be required because it's just an issue of them not being closed and released.