This section is designed to provide some troubleshooting tips for Jabberd 2. It is not intended as an exhaustive diagnostics or troubleshooting tree. Additional tips are extremely welcome, especially because I know that there are several regular Jadmin and Jabberd list posters who are more adept at troubleshooting than I am. Please post any additional tips you may have, and I will incorporate them into this page.
--enable-debug switch, and then start it with the -D option. The amount of debug output may be a bit daunting to a new administrator; however, there are a few things to look for. router, resolver, c2s, s2s or sm). Near the end of the debug output, you should be able to figure out which component crashed. Then, you can work backwards in the debug output — looking for output for the failed component — to see what its last actions were before crashing. This may provide some clues as to why the component crashed. Note that crashes of sm and c2s are often related to database and database-connectivity issues.
/usr/local/bin/jabberd -D > /tmp/jabber_debug.log
grep so that you only see certain messages. This works especially well for monitoring a single component. This command would run Jabberd 2 in debug mode, while showing only debug messages from the sm component:
/usr/local/bin/jabberd -D | grep ^SM
diff each configuration file against the template to see what changes you have made. For example, you might diff your c2s.xml file to verify changes you have made:
cd /usr/local/etc/jabberd
diff c2s.xml c2s.xml.dist
*.dist files in /usr/local/etc/jabberd.configure script for Jabberd 2 does not necessarily halt if it is unable to find a specific package, nor does it report invalid configure options. The best way to ensure that all packages are found is to specify all packages to use, along with their include and library paths when running configure. For example, you might use a configure statement like this to build Jabberd 2 and use MySQL for authentication and storage — after verifying that the extra include and library paths covered all the dependencies:
./configure --enable-mysql --enable-ssl --enable-idn \
--with-extra-include-path=/usr/include/mysql:/usr/include \
--with-extra-library-path=/usr/lib/mysql:/usr/lib
ldconfig is a useful tool for finding library files. For example, this command would report the locations of MySQL library files (as super-user):
ldconfig -p | grep mysql
ldconfig is that it reports libraries currently being used. This is especially useful if you have performed multiple installations of a package. Once the libraries for a dependency are found, the include files can usually be found in a parallel include directory. For example, if the libidn libraries were found in /usr/local/lib, the headers would most likely be found in /usr/local/include. If ldconfig fails to find a set of libraries, you may need to run it without the -p switch (see the man page). ./configure output is written to config.log. This is a huge file; however, you may be able to do some searching to identify problems. Searching for the whole word "no" is one way to find files that were not found when ./configure was run. Note that config.log reports all files not found as it searches multiple locations. Therefore, each unfound file is not necessarily critical.router, resolver, c2s, s2s and sm) may remain in a running state. Restarting Jabberd 2 while a component is running will only cause another crash. Before restarting, make sure that all Jabberd 2 components have stopped. Manually kill any running components before a restart. If you are debugging Jabberd 2, you may wish to use a simple shell script that will kill all Jabberd 2 processes:
#!/bin/sh
killall router
killall resolver
killall c2s
killall s2s
killall sm
jabber user will not have permissions to write to it.jabber user is able to access a path to the Jabberd 2 binaries — if you su to your jabber user in a directory where the jabber user has no permissions, the jabber user will not be able to run Jabberd 2. You may wish to cd to the root directory before you su to your jabber user./usr/local/var/jabberd/pid, and logging is done to syslog. If you change logging to log to files, make sure that your jabber user has write permissions to the log directory.id. Your client must be able to resolve the id as set in sm.xml (near the top of the file) and in c2s.xml (under the local section):
dig jabber.somedomain.com
/etc/hosts (in $WINDOWS\system32\drivers\etc\hosts or $WINDOWS\lmhosts for Windows).id (as set in sm.xml and c2s.xml). For example, if your Jabberd 2 id is set to jabber.somedomain.com, your users must connect as something like some_user@jabber.somedomain.com.
© 2003 Will Kamishlian and Robert Norris
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
|
|
|
|
![]() |