Previous | Table of Contents | Next |
Application Celebration
Some applications are pretty complicated. For example, email and scheduling applications can be insanely complex with lots of configuration files, incoming, outgoing, administrative, and extra queue directories, and so on. It can be hard to identify a corrupt fileor any other causethats the monkey wrench in the works.
Here are some strategies that work with file and print application problems:
Happy Fun Logs
A log file typically tells the tale pretty well. Youll want to make sure that your application is configured for verbose- or debug-level logging if youre experiencing problems. You dont necessarily need to be an expert to take action after looking at the logsyou can always search an error message on the Web, or sometimes the log file will suggest an action, like so:
file.idx is corruptrun rebuild process
Environment
Changing the environment is pretty case-specific. For example, you might be able to move the application from one server to another to rule out server problemsbut I wouldnt do this unless you had reason to believe that the problem was server-related. If youre having problems that seem capacity-related, can you move some users to a different application server?
Restoring from a Known Good Point
If youre not an expert in the application, and neither of the first two strategies work out, the beautiful thing about file-level applications is that theyre well-suited to fixing by restoration. Youll still need to know where the application lives in order to restore it, but if you installed it, or if you have the manual, this should be trivial to find out.
Complex applications sometimes have more than one locationan app that exchanges state information with another location should not be restored on its own. The app might get really, really, confused if all of a sudden half of its brain gets restored.
Experts Inaction
Ive been in a shop where nobody had been trained on the email system; that is, although everybody had been trained on how to use the system, nobody had been trained in how to administer it. So when the mail system stopped talking one fine morning, nobody really knew how to deal with it. Log files showed nothing in particular. A search of the Web revealed nothing. Technical support hold times were in excess of an hour, with the promise of a callback later that afternoonmaybe. All the IT personnel in this shop were highly trained professionalsbut not having been trained on the administration of this application, they were just as useless as anybody else in diagnosing this problem. But waiting all day for tech support was not a popular option. After restoring the system from backup, everything workednobody even lost any mail, since the problem had occurred during the night, after the backup ran. To this day, nobody knows what the specific problem wasand nobody cares. Moral of the story: Good backups win. |
Client/server troubleshooting basically entails verifying that TCP/IP communications are working okay and then verifying that the server program is answering the phone on the other endthat is, the correct socket is listening at the server end.
Lets quickly review TCP/IP connectivity techniques:
Get used to typing the netstat -a commandit is the tool for troubleshooting client/server application problems. Lets quickly go over what the output of netstat -a shows you:
Proto Local Address Foreign Address State
Does the local socket address matter? No. Just like with a phone call, you can use just about any free extension to dial outand your computer will do so automatically. The local socket address only matters if the computer that youre sitting on is a server. In that case, it must be listening at the correct socket number; otherwise, nobody will be able to talk to it.
Depending on the operating system, youll see one of the following various states in the State column:
State | Description |
---|---|
LISTENING | Im a server, and Im ready to talk to someone. |
ESTABLISHED | Im having a conversation. |
SYN_SENT | Im trying to synchronize the call with someone, but no luck so far. |
SYN_RECV | Im in the process of synching up with someone. |
CLOSE_WAIT | The other end just hung up; Im waiting for the dial tone. |
TIME_WAIT | I hung up; Ill get rid of this entry shortly. |
LAST_ACK | The other end said goodbye and will shut down shortly. |
FIN_WAIT1 | The socket is closed. Ill get rid of this shortly. |
FIN_WAIT2 | The socket was closed by other end. Ill get rid of this shortly. |
Previous | Table of Contents | Next |