Debugging UNIX System Services, Lotus Domino, Novell Network Services, and other Applications on OS/390 Paul Rogers, Manfred Hauff, Juergen Hoerner, Wilhelm Michel International Technical Support Organization www.redbooks.ibm.com SG24-5613-00 International Technical Support Organization Debugging UNIX System Services, Lotus Domino, Novell Network Services, and other Applications on OS/390 November 1999 SG24-5613-00 Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix B, “Special notices” on page 293. First Edition (November 1999) This edition applies to all versions of OS/390 (5647-A01) and to all subsequent releases and modifications until otherwise indicated in new editions. Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. HYJ Mail Station P099 522 South Road Poughkeepsie, NY 12601-5400 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. © Copyright International Business Machines Corporation 1999. All rights reserved. Note to U.S Government Users - Documentation related to restricted rights - Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. Contents Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv The team that wrote this redbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Comments welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Chapter 1. OS/390 UNIX System Services . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1 Introduction to OS/390 UNIX System Services . . . . . . . . . . . . . . . . . . . . . .1 1.1.1 OS/390 UNIX support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1.2 OS/390 UNIX software interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 1.1.3 Hardware considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1.1.4 Workstation connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 1.1.5 Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 1.1.6 Application programmers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 1.1.7 Administrative tasks using the ISPF shell . . . . . . . . . . . . . . . . . . . . . .6 1.2 Installation concepts for OS/390 UNIX System Services . . . . . . . . . . . . . . .7 1.2.1 Startup definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1.2.2 Levels of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1.2.3 Dynamic activation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 1.2.4 Job Wait Time (JWT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 1.2.5 Started procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 1.3 Installation highlights of OS/390 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . .11 1.3.1 How UNIX System Services has changed . . . . . . . . . . . . . . . . . . . . .12 1.3.2 Implementing SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 1.3.3 Implementing a security system for UNIX System Services . . . . . . . .15 1.3.4 Allocating and restoring the HFS files . . . . . . . . . . . . . . . . . . . . . . . .16 1.3.5 Performing HFS post-restore activities . . . . . . . . . . . . . . . . . . . . . . .16 1.4 Debugging OS/390 UNIX System Services . . . . . . . . . . . . . . . . . . . . . . . .17 1.4.1 Hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 1.4.2 Common problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 1.5 UNIX System Services dump processing . . . . . . . . . . . . . . . . . . . . . . . . .30 1.5.1 How to provide a dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Chapter 2. Lotus Domino for S/390—troubleshooting/hints/tips . . . . . 2.1 OS/390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Domcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 IEFUSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 OS/390 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 SYSLOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5 Dump options/IPCS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.6 CEEDumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 UNIX System Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 nsd.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Return codes and how to interpret a USS message . . . . . . . . . . 2.2.3 Useful UNIX commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Lotus Domino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Startup script and Language Environment (LE) run-time options . 2.3.2 How to activate the Java environment . . . . . . . . . . . . . . . . . . . . . 2.3.3 Common parameters in the notes.ini . . . . . . . . . . . . . . . . . . . . . . © Copyright IBM Corp. 1999 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 .34 .34 .36 .38 .40 .41 .45 .45 .45 .49 .51 .53 .53 .54 .56 iii iv 2.3.4 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.5 The Domino console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6 Programs (compact, update, updall, and fixup) . . . . . . . . . . . . . . . 2.4 Hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 How to edit the notes.ini file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Cleaning up server resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 The HTTP task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.4 The POP3 task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.5 The SMTP task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.6 How mail routes in a Domino system . . . . . . . . . . . . . . . . . . . . . . . 2.4.7 Transaction logging in Domino R5 . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Troubleshooting documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.3 POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.4 Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.5 Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.6 Calendaring/Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.7 Common info/data needed by support personnel in case of errors . 2.5.8 More troubleshooting information . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Information sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Required APARs and PTFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2 Web sites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.3 Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.4 Other information sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 . 61 . 75 . 83 . 83 . 85 . 86 . 90 . 96 . 98 100 103 103 105 105 106 107 111 114 115 118 118 119 122 123 Chapter 3. Novell Network Services . . . . . . 3.1 Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 NDS and NDS practices. . . . . . . . . . 3.1.2 Uses of NNS for OS/390 . . . . . . . . . 3.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 The structure of NNS . . . . . . . . . . . . 3.2.2 Features of NNS . . . . . . . . . . . . . . . 3.2.3 NNS functions . . . . . . . . . . . . . . . . . 3.2.4 Licensing system . . . . . . . . . . . . . . . 3.2.5 NNS networking . . . . . . . . . . . . . . . . 3.3 Installation and customization . . . . . . . . . 3.3.1 Software requirements . . . . . . . . . . . 3.3.2 Hardware requirements . . . . . . . . . . 3.4 Customization . . . . . . . . . . . . . . . . . . . . . 3.4.1 UNIX System Services environment 3.4.2 Environment variables . . . . . . . . . . . 3.4.3 Network configuration . . . . . . . . . . . 3.5 Installing NNS for OS/390 . . . . . . . . . . . . 3.5.1 Before you get started . . . . . . . . . . . 3.5.2 Server installation . . . . . . . . . . . . . . 3.5.3 Installing NetWare client software . . 3.6 Serviceability and debugging . . . . . . . . . . 3.6.1 Hints and tips. . . . . . . . . . . . . . . . . . 3.6.2 Tuning the NNS server . . . . . . . . . . 3.6.3 Debugging . . . . . . . . . . . . . . . . . . . . 3.6.4 Known problems . . . . . . . . . . . . . . . 3.6.5 Helpful commands . . . . . . . . . . . . . . 125 125 125 126 127 127 128 129 129 129 130 131 131 131 132 134 135 146 147 148 155 162 162 162 164 170 174 Debugging UNIX Applications on OS/390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 3.7 Getting NetWare client software 3.8 Emergency recovery . . . . . . . . . 3.9 Installation Worksheets . . . . . . . 3.10 Documentation . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . . . . . . . . . . . . . . . . .. .. .. .. . . . . . . . . .. .. .. .. . . . . . . . . . . . . . . . . .. .. .. .. . . . . . . . . . . . . . . . . .. .. .. .. . . . . . . . . .180 .181 .183 .184 Chapter 4. DCE/DFS . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Distributed Computing Environment (DCE) overview. 4.1.1 DCE base service . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Configuring a cell . . . . . . . . . . . . . . . . . . . . . . . 4.1.3 DCE start, stop, and debug hints . . . . . . . . . . . . 4.1.4 How to produce a dump . . . . . . . . . . . . . . . . . . 4.1.5 How to get a trace output from DCEKERN . . . . 4.1.6 DCE components . . . . . . . . . . . . . . . . . . . . . . . 4.2 Distributed File Service (DFS) . . . . . . . . . . . . . . . . . . 4.2.1 DFS installation . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Starting and stopping DFS . . . . . . . . . . . . . . . . 4.2.3 Daemon configuration file . . . . . . . . . . . . . . . . . 4.2.4 DFS daemon environment variable files . . . . . . 4.3 Information sources . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 OS/390 Distributed File Service publications . . . 4.3.2 OS/390 DCE publications . . . . . . . . . . . . . . . . . 4.3.3 Security Server publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 .185 .185 .190 .192 .195 .195 .196 .199 .200 .202 .206 .208 .208 .208 .209 .210 Chapter 5. Web server—troubleshooting/hints/tips . . . . . . . . . . . . . . . 5.1 Controlling your server using the console . . . . . . . . . . . . . . . . . . . . . . 5.2 Tracing and logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Language Environment tracing . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Common error messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 02AF (address space dirty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 401 errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Failed to load security module: . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.4 "Forbidden" or "Unauthorized" error message . . . . . . . . . . . . . . . 5.3.5 IMW0161E with error 500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.6 Error using message catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.7 Setup.sh error messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.8 ID and password prompt when accessing at a nonstandard port . 5.3.9 IMW messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.10 How to read a message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Tuning hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Performance hints when running Web server under USS shell . . 5.4.2 Tuning your Web server for better performance . . . . . . . . . . . . . 5.5 Tips for enabling WebSphere Application Server under OS/390 . . . . . 5.6 Information sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Useful Web sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 Informational APARs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 .211 .212 .212 .213 .213 .216 .216 .218 .219 .219 .219 .220 .220 .220 .221 .222 .223 .223 .225 .233 .236 .236 .237 .238 Chapter 6. Network File System (NFS). . . . . . . . . 6.1 Setting up the OS/390 NFS server environment 6.1.1 Environment examples . . . . . . . . . . . . . . . 6.1.2 Enable TCP/IP and the portmapper . . . . . . 6.1.3 RACF profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . .239 .239 .239 .241 .242 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v 6.1.4 Customize the OS/390 NFS server startup procedure 6.1.5 Security using the NFS server . . . . . . . . . . . . . . . . . . 6.1.6 BPXPRMxx parmlib member . . . . . . . . . . . . . . . . . . . 6.1.7 Starting the NFS server . . . . . . . . . . . . . . . . . . . . . . . 6.1.8 Mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.9 HFS data set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.10 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.11 Supported clients for the OS/390 NFS server. . . . . . 6.1.12 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Setting up the OS/390 NFS client environment . . . . . . . . . 6.2.1 UNIX System Services. . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 RACF profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.3 Starting the NFS client . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 MOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.5 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 244 244 245 245 246 247 248 249 249 257 257 258 258 258 259 263 Chapter 7. Infoprint Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 What the Infoprint Server does for you . . . . . . . . . . . . . . . . . . . 7.2 Printing OS/390 UNIX System Services data on AFP printers . . 7.3 Components of the OS/390 Infoprint Server . . . . . . . . . . . . . . . 7.3.1 OS/390 Print Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.2 NetSpool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.3 IP PrintWay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.4 UNIX System Services commands . . . . . . . . . . . . . . . . . . . 7.4 Relevant APARs for OS/390 Infoprint Server or Print Interface . 7.4.1 II11165 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2 II11659 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.3 OW39059 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 Information Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.1 Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2 Web sites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 265 265 266 266 266 267 267 268 270 270 271 272 272 272 273 Chapter 8. Language Environment for OS/390 . . . . 8.1 LE run-time options . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 LE run-time options . . . . . . . . . . . . . . . . . . . 8.1.2 Setting LE run-time options . . . . . . . . . . . . . 8.1.3 Some LE run-time options of interest . . . . . . 8.2 When are which libraries used . . . . . . . . . . . . . . . 8.3 Common Execution Library (CEL) . . . . . . . . . . . . 8.3.1 Set of common functions and routines of LE 8.3.2 Important modules to remember . . . . . . . . . 8.3.3 Messages and abends . . . . . . . . . . . . . . . . . 8.3.4 Run-time options . . . . . . . . . . . . . . . . . . . . . 8.4 LE hands on debug . . . . . . . . . . . . . . . . . . . . . . . 8.4.1 CEEDUMP debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. 275 275 275 276 276 277 277 277 277 278 280 284 284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . Appendix A. Tracing within TCP/IP. . . . . . . . . . . . . . . . . . . . . . A.1 The Component Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.1 Using the Component Trace with internal buffer . . . . . . . A.1.2 Using the Component Trace with external writer . . . . . . . A.2 The Packet Trace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Debugging UNIX Applications on OS/390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. ...... ...... ...... ...... ...... . . . . . 289 . . . . . 289 . . . . . 289 . . . . . 291 . . . . . 292 Appendix B. Special notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Appendix C. Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.1 International Technical Support Organization publications . . . . . . . . . . . . . . C.2 Redbooks on CD-ROMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Other publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 297 298 298 How to get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301 IBM Redbook fax order form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303 ITSO Redbook evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305 vii viii Debugging UNIX Applications on OS/390 Figures 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. © Copyright IBM Corp. 1999 USS overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 BPXPRMxx definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Downloading domcon.nsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Display of active exits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Display of IEFUSI exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Display all UNIX System Services address spaces . . . . . . . . . . . . . . . . . . . . . 38 Display currently mounted file systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Display the current settings of BPXPRMxx parameters . . . . . . . . . . . . . . . . . . 39 Display thread information for a process ID . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Sample IEASLP01 member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Display of all active slips on a system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Partial output of nsd.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 List of all available parameters for the nsd.sh script . . . . . . . . . . . . . . . . . . . . 47 Terminating the server with option nsd.sh -kill . . . . . . . . . . . . . . . . . . . . . . . . . 48 Error message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Sample output of the UNIX command df -P . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Sample output of UNIX command env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Sample output of the UNIX command ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Java error messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Enable http logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 domlog.nsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 cconsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Set secure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Sample notes.ini - Part 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Sample notes.ini - Part 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Display of semaphores and shared memory resources . . . . . . . . . . . . . . . . . . 86 Activating HTTP - Internet protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Activating HTTP - server configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Activating HTTP - Internet password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Activating HTTP - password prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Activating HTTP - accessing Domino databases using an Internet browser . . 89 TSO NETSTAT command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Activating POP3 - server configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Defining a POP3 user - basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Defining a POP3 user - mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Creating mail database for a POP3 user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 ACL of the POP3 user’s mail database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Netscape mail server properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Netscape Communicator 4.6 - Messenger view . . . . . . . . . . . . . . . . . . . . . . . 94 Available server tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Integration of POP3 in a Notes mail environment . . . . . . . . . . . . . . . . . . . . . . 96 Enable the SMTP listener task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Enable SMTP inbound and outbound ports . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Mail routing in a Domino environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Configuring transaction logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Load router with variable DebugRouter set to 3. . . . . . . . . . . . . . . . . . . . . . . 107 Agent log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 readme.nsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 help5_admin.nsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 APARs and PTFs needed for Domino S390 . . . . . . . . . . . . . . . . . . . . . . . . . 119 ix 51. UNIX System Services (USS) site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 52. Domino R5 home page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 53. Domino tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 54. Lotus Domino - Tools for Developers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 55. UNIX System Services library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 56. Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 57. Lotus Domino R5 help documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 58. Lotus Domino R5 documentation using an Internet/intranet browser . . . . . . . 124 59. Structure of NNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 60. NNS networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 61. IFAPRDxx parmlib member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 62. NetWare/IP domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 63. IOCDS definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 64. VTAM definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 65. OSA2 configuration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 66. OSA-2 CHPID selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 67. OSA CHPID selection continued. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 68. OSA configuration list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 69. OSA-2 configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 70. High Performance Data Transfer Multipath Channel settings . . . . . . . . . . . . 143 71. Syntax of the nwdiscover command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 72. Using nwdiscover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 73. drouter information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 74. Successful nwserver command to start the server . . . . . . . . . . . . . . . . . . . . . 152 75. Continuation of the syslog in Figure 74 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 76. Messages because of the dsinstall command . . . . . . . . . . . . . . . . . . . . . . . . 153 77. Directory service installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 78. Right mouse click the Network Neighbor icon. . . . . . . . . . . . . . . . . . . . . . . . .156 79. Novell NetWare login panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 80. Novell IntranetWare Client and Connection panels . . . . . . . . . . . . . . . . . . . . 157 81. Novell IntranetWare Client Server list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 82. Select the server from the list and click OK to log in. . . . . . . . . . . . . . . . . . . . 158 83. Login result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 84. Check the IntranetWare Connections using Network Neighbor . . . . . . . . . . . 159 85. Installation environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 86. Server identification showing the connection type IPX . . . . . . . . . . . . . . . . . . 160 87. Server error log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 88. Environment of the ADMIN user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 89. LANalyzer dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 90. LANalyzer filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 91. LANalyzer viewing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 92. Capture an SVC dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 93. GTF parms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 94. Messages in the syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 95. NWSERVER example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 96. Example of the nwserver command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 97. Example issue of a nwserver command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 98. Result of the failing SET OMVS command . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 99. Unsuccessful LOGIN Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 100.OMVS, A=ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 101.D NET,TRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 102.D NET,E,ID=INRT1100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 103.Display unit command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 x Debugging UNIX Applications on OS/390 104.The Novell server is not up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.The Novell server is coming up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106.The Novell server is up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107.Ipxinfo example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108.Download the client code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109.OS/390 DCE architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110.DCE cell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.DCE daemons in the cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.MODIFY command to display server configuration . . . . . . . . . . . . . . . . . . . . 113.MODIFY command to display server statistics . . . . . . . . . . . . . . . . . . . . . . . 114.Turn on and off very verbose tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.Restarting the server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.MODIFY command to display all parameters . . . . . . . . . . . . . . . . . . . . . . . . 117.Controlling the trace level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118.WebSphere Application manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.Command output: D TCPIP,TCPV34,NET,CACH . . . . . . . . . . . . . . . . . . . . . 120.IBM WebSphere troubleshooter for OS/390 . . . . . . . . . . . . . . . . . . . . . . . . . 121.NFS network configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.NFS 2-tier versus 3-tier overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.Modifying the hlq.ETC.RPC file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.Port definitions for the portmapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.RACF primary option menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126.RACF user profile services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127.RACF add an NFS user. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.Set operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129.Select to set up the OMVS segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130.Add OMVS parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.Add OMVS parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.Example of a filesystype statement in the BPXPRMxx member . . . . . . . . . . 133.Server messages in the log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.Example to mount a file system within OS/390 UNIX . . . . . . . . . . . . . . . . . . 135.Select option M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.Define the data set type HFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137.NFS server debug9 trace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138.Output of a ping command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139.Example of a showattr command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140.Showmount -e <host> example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.RPCINFO -p <host> example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.NFS Internet page http://www.s390.ibm.com/nfs/faq/faqindex.html . . . . . . . 143.Environmental Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.Problem Determination, Q&A’s Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.Technical Support Site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.NFS client BPXPRMxx parmlib member entry . . . . . . . . . . . . . . . . . . . . . . . 147.Client messages in the log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148.Mount syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149.Example of a mount. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150.NFS client trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.OS/390 Infoprint Server capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.USS data to AFP printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.Partial traceback information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.Example dump output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 178 178 178 181 186 191 191 211 211 211 211 212 213 215 228 238 240 241 241 242 242 243 243 243 243 243 244 245 246 246 247 248 250 251 251 251 252 254 255 256 257 257 258 259 259 260 265 266 284 288 xi xii Debugging UNIX Applications on OS/390 Tables 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. © Copyright IBM Corp. 1999 Sample jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Parmlib members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Jobs for allocating and restoring HFS files. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Shell initialization files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Files associated with /etc/init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 OMVSDATA keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Report type levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Filtering keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 |USS errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 List of Return Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 USS errno2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Reason Code example 006D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 List of Reason Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Useful UNIX commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Common notes.ini parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 cconsole commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Command line switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Comparison of the three styles of compaction . . . . . . . . . . . . . . . . . . . . . . . . . 77 Short summary of options for the Compact utility . . . . . . . . . . . . . . . . . . . . . . 78 Compare Update and Updall characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Updall options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Fixup options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 notes.ini parameters for transaction logging . . . . . . . . . . . . . . . . . . . . . . . . . 101 Useful commands to control the router task . . . . . . . . . . . . . . . . . . . . . . . . . 107 Doppelganger options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Server prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 DNS source information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 How to configure three networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 nwdiscover parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 nwdiscover examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 DCE Dump commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 DFS procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 The MODIFY DFS command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Daemon’s status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Message ranges for the server components . . . . . . . . . . . . . . . . . . . . . . . . . 221 USS errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Return codes listed by value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 The Reason code is made up of 4 bytes in the following format . . . . . . . . . . 261 NFS client Reason codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Reason codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Common IPCS commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 LE-related IPCS commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 xiii xiv Debugging UNIX Applications on OS/390 Preface In this redbook we discuss troubleshooting and debugging terms in the UNIX System Services (USS) area. We provide a broad understanding of what to do in case of problems with USS and a number of applications. Chapter 2, which discusses troubleshooting Lotus Domino for S/390, is of particular value because of the rapidly increasing interest in this product in a UNIX System Services environment. Information about what to do with server problems is described here. Chapter 3, which describes Novell Network Services (NNS), also contains much useful information. In it we discuss the most common problems you are likely to encounter and provide helpful information about the NetWare File System, WebSphere Application Server, DCE/DFS, and more. This redbook will be useful for IT specialists, system programmers, application developers, and administrators in the product areas that are covered here. It will help to pinpoint problems with logs, traces, dumps, and other troubleshooting issues. The team that wrote this redbook This redbook was produced by a team of specialists from around the world working at the International Technical Support Organization, Poughkeepsie Center. Paul Rogers is a senior member of the International Technical Support Organization, Poughkeepsie Center. He writes extensively and teaches IBM classes worldwide on all areas of OS/390. Manfred Hauff is an I/T specialist working for IBM PSS Mainz, Germany. He has 10 years of experience in supporting IBM OS/390 Software and has worked for one year in the Lotus Domino S/390 EMEA second-level support. His areas of expertise include OS/390 SCP, TSO and ISPF, UNIX System Services, e-business, and Web applications. He has written extensively on Lotus Domino S/390 and Webserver. Juergen Hoerner is an I/T specialist working for IBM PSS Mainz, Germany. He has seven years of experience in supporting IBM OS/390 Software. His areas of expertise include OS/390 DFP, DFSMS, NFS, UNIX System Services, and the LAN Server Consolidation products LFS and LANRES. He has written extensively on Network File Service and Novell Network Services. Wilhelm Michel is an I/T specialist working for IBM PSS Mainz, Germany. He has 10 years of experience in supporting IBM OS/390 Software and has worked for more than one year in the Lotus Domino S/390 EMEA 2nd level Support. His areas of expertise include OS/390 Publishing Software, UNIX System Services, e-business, Internet applications, and Windows NT. He has written extensively on Lotus Domino S/390, Webserver, and Print Server. © Copyright IBM Corp. 1999 xv Thanks especially to the following people for helping to write this redbook: Peter Hilger, IBM PSS Mainz, Germany Matthias Korn, IBM PSS Mainz, Germany Stefan Bretz, IBM PSS Mainz, Germany And, in addition, to the following people for their contributions on this project: Bob Haimowitz, IBM Raleigh Rich Conway, IBM Poughkeepsie Anthony Grech, IBM Poughkeepsie Brian Sullivan, IBM Poughkeepsie Bill White, IBM Poughkeepsie Jon Entwistle, IBM Poughkeepsie Johannes Schneider, IBM Mainz, Germany Andreas Horn, IBM Mainz, Germany Comments welcome Your comments are important to us! We want our redbooks to be as helpful as possible. Please send us your comments about this or other redbooks in one of the following ways: • Fax the evaluation form found in “ITSO Redbook evaluation” on page 305 to the fax number shown on the form. • Use the on-line evaluation form found at http://www.redbooks.ibm.com/ xvi Debugging UNIX Applications on OS/390 Chapter 1. OS/390 UNIX System Services The following sections contain information about common items, troubleshooting, debugging issues, and hints and tips about UNIX System Services (OS/390 UNIX). 1.1 Introduction to OS/390 UNIX System Services The term OS/390 UNIX System Services and its abbreviation OS/390 UNIX are new names for what was previously known as OpenEdition in earlier levels of OS/390 and MVS/ESA. OS/390 UNIX System Services provides support for two open systems interfaces on the OS/390 operating system: • An application program interface (API) • An interactive shell interface With the APIs, programs can run in any environment, including in batch jobs, in jobs submitted by TSO/E interactive users and in most other started tasks—or in any other MVS application task environment. The programs can request: • Only MVS services • Only OS/390 UNIX System Services • Both MVS and OS/390 UNIX System Services The shell interface is an execution environment analogous to TSO/E, with a programming language of shell commands analogous to the Restructured Extended Executor (REXX) language. The shell work consists of: • Programs run interactively by shell users • Shell commands and scripts run interactively by shell users • Shell commands and scripts run as batch jobs 1.1.1 OS/390 UNIX support OS/390 UNIX responds to requests from programs and the OS/390 shell and is made up of system and application services. UNIX System Services provides: • XPG4 UNIX 1995 conformance • Assembler callable services • TSO/E commands to manage the file system • ISPF shell environment UNIX System Services Application Services interprets commands from users or from programs, called shell scripts, and requests MVS services in response to the commands. It also provides the dbx debugger to help an application programmer debug source programs written in C. UNIX System Services Application Services provides: • A TSO/E command to enter the shell environment © Copyright IBM Corp. 1999 1 • A shell environment for developing and running applications • Utilities to administer and develop in a UNIX environment • The dbx debugger • Support for socket applications • rlogin (remote login) and inetd functions • Direct telnet based on TCP/IP • Support for full-screen applications (curses support) • Communications Server login monitor support UNIX System Services Application Services also contains the code that was provided in the optional Shell and Utilities and the Debugger features prior to OS/390. 1.1.2 OS/390 UNIX software interaction OS/390 UNIX interacts with other products and operating system services, including: • Workload Manager (WLM), to create address spaces • System Management Facilities (SMF), for accounting • C/C++ Compiler, to compile programs • Language Environment, to execute the shell and utilities or any other XPG4-compliant shell application • Data Facility Storage Management Subsystem/MVS (DFSMS/MVS), to support Hierarchical File System (HFS) data sets • Security Server (RACF), to control access • Resource Measurement Facility (RMF), to monitor and report on the use of resources • System Display and Search Facility (SDSF), to monitor/control address spaces and printing on JES2 systems • Time Sharing Option Extensions (TSO/E), to support the ISPF shell and OMVS environments • Transmission Control Program/Internet Protocol (TCP/IP), to use telnet and rlogin. • Interactive System Productivity Facility (ISPF), to use OBROWSE, OEDIT and the ISPF shell • BookManager READ/MVS, to use the OHELP on-line help facility Figure 1 on page 3 shows how OS/390 UNIX, the shell interface, and the API relate to the rest of the OS/390 operating system: 2 Debugging UNIX Applications on OS/390 Figure 1. USS overview 1.1.2.1 Workload Manager (WLM) The WLM transaction initiators provide address spaces when programs issue the fork() or spawn() C function or OS/390 callable services. 1.1.2.2 System Management Facility (SMF) SMF collects data for accounting. SMF job and job step accounting records identify processes by user, process, group, and session identifiers. Fields in these records also provide information on resources used by the process. SMF File system records describe file system events such as file open, file close, and the file system mount, unmount, quiesce and unquiesce. 1.1.2.3 C/C++ Compiler The C/C++ Compiler provided with OS/390 is required to compile C code using the c89 command or to compile C++ code using the cxx command. 1.1.2.4 Language Environment (LE) Language Environment (LE) provided with OS/390 is required to run a shell command or utility. User-provided application programs written in C/C++ require the C/C++ run-time library provided with LE. 1.1.2.5 Data Facility Storage Management Subsystem/MVS - DFSMS DFSMS/MVS is required to support the HFS data set type. HFS data sets must reside on DFSMS/MVS managed DASD. 1.1.2.6 Security Server RACF or an equivalent security product manages system and data security by verifying that a user is allowed access to a resource. A user is identified by a user ID, which is kept in the RACF user profile and a GID, which is kept in the RACF group profile. OS/390 UNIX System Services 3 1.1.2.7 Resource Measurement Facility (RMF) RMF collects data used to describe OS/390 UNIX performance. RMF reports support an address space type of OMVS for address spaces created by fork or spawn callable services and support two swap reason codes. When an installation specifies an OMVS subsystem type in the IEAICSxx parmlib member or in the WLM service policy, RMF shows the activity of forked address spaces separately in the RMF Workload Activity report. RMF monitors the use of resources in an OMVS Kernel Activity report. 1.1.2.8 System Display and Search Facility (SDSF) Shell users can enter TSO/E sessions and use SDSF to: • Monitor printing • Monitor and control a batch job • Monitor and control forked address spaces • Find out which users are logged on to TSO/E sessions 1.1.2.9 Time Sharing Options/Extended (TSO/E) One way to enter the shell environment is by using TSO/E. A user logs on to a TSO/E session and enters the TSO/E OMVS command. The OS/390 environment has other TSO/E commands, for example, to logically mount and unmount file systems, create directories in a file system, and copy files to and from MVS data sets. Users can switch from the shell to their TSO/E session, enter commands or do editing, and switch back to the shell. 1.1.2.10 Transmission Control Protocol/Internet Protocol (TCP/IP) Another way to enter the shell environment is by using rlogin or telnet from a workstation in the TCP/IP network. User-written socket applications can use TCP/IP as a communication vehicle. Both client and server socket applications can use the socket interface to communicate over the Internet (AF_INET) and between other socket applications by using local sockets (AF_UNIX). An assembler interface is also provided for those applications that do not use the C/C++ run-time library. 1.1.2.11 Interactive System Productivity Facility (ISPF) Users of ISPF can use the ISPF shell environment to create, edit, browse and perform other functions for files and directories in the HFS. 1.1.2.12 BookManager READ/MVS An on-line help facility is provided. You can invoke this facility with the TSO/E OHELP command and view on-line publications in BookManager format. 1.1.3 Hardware considerations You can use the same hardware as the other components of the OS/390 system. Use the same network connections that TSO/E uses and the processor and network connections that JES uses. 4 Debugging UNIX Applications on OS/390 Additional hardware considerations are: • If you want to use rlogin the connections are different from those for TSO/E users. • The optional Suppression on Protection feature, if not present, negates certain functions such as mmap() and fork() copy-on-write. • For Communications Server support, a LAN or channel-attached RISC System/6000 is required. • For improved TCP/IP performance, install the CHECKSUM hardware improvement. • To take advantage of improved performance in semaphore processing, you must be running on hardware that supports the PLO (Perform Lock Operation) instruction. 1.1.4 Workstation connections To access kernel services using TSO/E, you need the same hardware as other OS/390 components. You also need the workstation connections that TSO/E uses and the processor and network connections that JES2 or JES3 use. Network connections can be made through: • Systems Network Architecture (SNA) network: Configure the workstation hardware and software to access TSO/E through the Virtual Telecommunications Access Method (VTAM). The system requires no additional network definitions for access to OS/390 UNIX through TSO/E. • Transmission Control Protocol/Internet Protocol (TCP/IP): Configure the workstation hardware and software to communicate with TCP/IP for OS/390. For the Telnet (TN3270) server, define the Telnet VTAM parameters. • TCP/IP rlogin or telnet: For rlogin or telnet, configure the workstation hardware and software to communicate with TCP/IP for OS/390. If you use rlogin, you may need additional network capacity to support additional rlogin users. • Communications Server: Communications Server is a terminal attachment capability. It consists of an RS/6000 that is LAN- or channel-attached to the OS/390 host system. Using this connection, terminals on asynchronous ports of the RS/6000 can operate as if they were directly attached to the OS/390 system. Additionally, Communications Server support enables a user to telnet or rlogin to the OS/390 system. 1.1.5 Users With the UNIX System Services Application Services users can: • Request services from the system through shell commands. Shell commands are like TSO/E commands. • Write shell scripts to run tasks. Shell scripts are analogous to REXX execs. • Run programs interactively (in the foreground) or in the background. Many users use similar interfaces on other systems, such as AIX for the RS/6000 or UNIX, and use terminology different from OS/390 terminology. For example, they refer to virtual storage as memory. The work done by their system administrators is handled by system programmers in an OS/390 system. OS/390 UNIX System Services 5 1.1.6 Application programmers Application programmers are likely to do the following when creating UNIX-compliant application programs: 1. Design, code, and test the programs on their workstations using XPG4 UNIX-conforming systems. 2. Send the source modules from the workstation to OS/390. 3. Copy the source modules from the OS/390 data sets to HFS files. 4. Compile the source modules and link-edit them into executable programs. 5. Test the application programs. 6. Use the application programs. An OS/390 UNIX program can be run interactively from a shell in the foreground or background, run as an OS/390 batch job, or called from another program. 1.1.6.1 Types of applications The following types of applications exist in an OS/390 system with OS/390 UNIX: • Strictly conforming XPG4 UNIX-conforming applications • Applications using only kernel services • Applications using both kernel and OS/390 services • Applications using only OS/390 services An OS/390 program submitted through the job stream or as a job from a TSO/E session can request kernel services through the following: • C/C++ functions • Shell commands after invoking the shell • Callable services At the first request, the system dubs the program as an OS/390 UNIX process, unless it is a POSIX(OFF) program (which is not dubbed). 1.1.7 Administrative tasks using the ISPF shell The ISPF shell is a panel interface that you can use instead of TSO/E commands or shell commands to perform certain tasks. The appropriate sections of this book mention for which tasks you can use this interface. You can use the ISPF shell to work with the file system to do the following tasks: • Display all mounted file systems • Display the attributes of a mounted file system such as total blocks, blocks in use or ddname • Create a file system (allocate an HFS data set) You can use the ISPF shell to perform the following tasks, which require you to: • Set up the root file system • Create character special files • Mount a file system 6 Debugging UNIX Applications on OS/390 • Unmount a file system • Reset a pending unmount • Reset a quiesce status • Change attributes for an OS/390 UNIX user • Display a list of users and sort by name, UID and GID • Print a list of users • Set up OS/390 UNIX users • Set up OS/390 UNIX groups • Permit users to alter their own home directory and initial program 1.2 Installation concepts for OS/390 UNIX System Services Beginning with OS/390 V1R3, installation of service was simplified as follows: • OpenEdition System Services (FMID HOMxxxx) was merged with the BCP and is now part of the BCP FMID. In addition, the OMVS address space is started automatically like traditional OS/390 address spaces such as Dump Services and Global Resource Serialization (GRS) address space. • The OMVS address space is always started and gets its input from the OMVS= system parameter in the IEASYSxx parmlib member or as a parameter entered during IPL. • If OMVS= is not specified, the OMVS address space is still started. To dynamically reconfigure kernel services use the SET OMVS or SETOMVS command. If a full restart of kernel services is required, the system must be re-IPLed. • The START OMVS and STOP OMVS command is no longer supported. In OS/390 V1R2, the Shell and Utilities and Debugger (FMIDs HSUxxxx and HDXxxxx) were merged with OpenEdition Application Services and made part of FMID HOTxxxx. 1.2.1 Startup definitions Using the OMVS parameter in the IEASYSxx parmlib member you are able to specify one or more BPXPRMxx parmlib members to be used to specify the initial parmlib settings for the kernel. If you omit the OMVS parameter or if you specify OMVS=DEFAULT in the IEASYSxx parmlib member, the kernel is started in a minimum configuration mode. See 1.4, “Debugging OS/390 UNIX System Services” on page 17 for more details according to the BPXPRMxx member and its statements. 1.2.2 Levels of operation It is possible to activate the OS/390 UNIX kernel services by three ways: • Minimum mode • Sockets-only mode • Full-function mode OS/390 UNIX System Services 7 1.2.2.1 Minimum mode If you do not specify OMVS= in the IEASYSxx parmlib member or if you specify OMVS=DEFAULT, then kernel services start up in minimum mode when the system is IPLed. This mode is intended for installations that do not plan to use the kernel services. In minimum mode: • Many services are available, but some functions such as TCP/IP sockets require additional system customization, may not work. • TCP/IP sockets (AF_INET) are not available. • A Temporary File System (TFS) is used. A TFS is an in-storage file system, hence no physical DASD data set needs to exist or to be mounted. The TFS is initialized and primed with a minimum set of files and directories. Any data written to this file system is not written to DASD. The TFS is initialized with these directories and files: / (root directory) /bin directory /etc directory /tmp directory /dev directory /dev/null file There are no executables in the TFS (that is, you will not find the Shell and Utilities). Do not attempt to install UNIX System Services Application Services in the TFS, since no data will be written to DASD. This is the minimum requirement for applications to be able to use kernel services. In this mode, you do not need to install or customize SMS, or customize the security product, for working with kernel services. If the default is set up, you do not need to define users who want to run an application that uses APIs. For example, you would not need to assign a UID to an application that wants to use C pthread functions. 1.2.2.2 Sockets-only mode For a sockets-only level of kernel services that is more than the minimum but does not need SMS or the shell and other UNIX utilities (such as rlogin), you can create a BPXPRMxx parmlib member containing definitions as shown in the following figure: 8 Debugging UNIX Applications on OS/390 FILESYSTYPE TYPE(UDS) ENTRYPOINT(BPXTUINT) NETWORK DOMAINNAME(AF_UNIX) DOMAINNUMBER(1) MAXSOCKETS(2000) TYPE(UDS) FILESYSTYPE TYPE(INET) ENTRYPOINT(EZBPFINI) NETWORK DOMAINNAME(AF_INET) DOMAINNUMBER(2) MAXSOCKETS(10000) TYPE(INET) Figure 2. BPXPRMxx definitions The BPXPRMxx parmlib member: • Takes the default minimum mode and uses the TFS. • Sets up the DOMAIN name specifications for the Communication Server socket connections. Whether you can run in minimum mode when using sockets depends on a number of factors. If you are using only AF_UNIX sockets, you should be able to run in minimum mode. However, if you are using AF_INET sockets, it will depend on which transport provider you are using: • Because TCP/IP requires the use of a file system, it cannot be run in minimum mode. • Other AF_INET providers, such as OESTACK, do not require a file system. Those can be run in minimum mode. For each transport provider you specify in the FILESYSTYPE or SUBFILESYSTYPE statements in your BPXPRMxx PARMLIB member, check whether a file system is required. 1.2.2.3 Full-function mode If an active BPXPRMxx parmlib member specifies "FILESYSTEM TYPE(HFS)", then the kernel services start up in full-function mode when the system is IPLed. To use the full function, you need to: • Set up BPXPRMxx parmlib definitions • Set up DFSMS/MVS • Set up the Hierarchical File System (HFS) • Install UNIX System Services Application Services • Set up the security product definitions for OS/390 UNIX • Set up the users’ access and their individual file systems OS/390 UNIX System Services 9 1.2.3 Dynamic activation You can modify configuration aspects by using the SETOMVS operator command, or you can change the BPXPRMxx PARMLIB members that are in effect by using the SET OMVS operator command. 1.2.3.1 SETOMVS command The SETOMVS command allows you to dynamically reconfigure one or more of the system characteristics. A sample SETOMVS invocation is: SETOMVS MAXTHREADTASKS=100,MAXPROCUSER=8 1.2.3.2 SET OMVS command The SET OMVS (or its abbreviated form T OMVS) command lets you specify one or more BPXPRMxx parmlib members to dynamically reconfigure the settings of the kernel services. With the SET OMVS command, you can have multiple BPXPRMxx definitions so you can easily reconfigure a large set of the system characteristics. You can keep the reconfiguration settings in a permanent location for subsequent reference or reuse. A sample SET OMVS invocation is: SET OMVS=(AA,BB) or T OMVS=(AA,BB) If a parameter is specified more than once, with a different value, in the parmlib members, the first value specified is the value used. For example, if you specify SET OMVS=(AA,BB) where AA has a MAXPROCUSER=10 value and BB has a MAXPROCUSER=5 value, MAXPROCUSER=10 is used. 1.2.4 Job Wait Time (JWT) When an address space is dubbed as a process, or when a forked or spawned process is created, the process may go into signal-enabled waits. In a signal-enabled wait, the address space is made exempt from long-wait time-outs as specified by the JWT value in parmlib member SMFPRMxx. This enables parent processes to wait forever while child processes are running. Otherwise, if a parent process is terminated due to a JWT time-out, a SIGHUP is sent to the running child process and work is lost. However, shell users, whether logged on through TSO/E and the OMVS command, or through rlogin or telnet, are exempt from JWT time-out because the shell is in a signal-enabled wait while waiting for a command from the user. If you want the shell users to time out and be logged off for long detected waits, then you need to specify the TMOUT environment variable in /etc/profile. The TMOUT environment variable contains the number of seconds before user input times out. If user input is not received within this length of time, the shell ends. 1.2.5 Started procedures OS/390 UNIX System Services requires started procedures to be set up. There are three procedures, OMVS, BPXOINIT, and BPXAS. 1.2.5.1 OMVS The OMVS cataloged procedure runs a program that initializes the kernel. The STARTUP_PROC statement in the BPXPRMxx parmlib member specifies the 10 Debugging UNIX Applications on OS/390 OMVS cataloged procedure. In our examples we have used the default, which is OMVS. 1.2.5.2 BPXOINIT In OS/390 Release 3, BPXOINIT is the started procedure that runs the initialization process. BPXOINIT is also the jobname of the initialization process (prior to OS/390 Release 3, the initialization process was created using an APPC allocate and the jobname was OMVSINIT). BPXOINIT is shipped in SYS1.PROCLIB. The BPXOINIT address space has two categories of functions: 1. It behaves as PID(1) of a typical UNIX system. This is the parent of /etc/rc, and it inherits orphaned children so that their processes get cleaned up using normal code in the kernel. This task is also the parent of any MVS address space that is dubbed and not created by fork or spawn. Therefore, TSO/E commands and batch jobs have a parent PID of 1. 2. Certain functions that the kernel performs need to be able to make normal kernel calls. This address space is used for these activities. For example, mmap() and user ID alias processing. The STEPLIB DD statement is propagated from OMVS to BPXOINIT. Therefore, if there is a STEPLIB DD statement in the BPXOINIT procedure, it will not be used if a STEPLIB DD statement was specified in the OMVS procedure. 1.2.5.3 BPXAS Prior to OS/390 V2R4, APPC/MVS transaction initiators provided address spaces when programs used the fork() or spawn() C function or callable services. Now Workload Manager (WLM) creates the address spaces. The BPXAS PROC found in SYS1.PROCLIB will now be used to create the WLM-managed address spaces. When using WLM, you do not need to do any tuning or issue any commands. 1.3 Installation highlights of OS/390 UNIX Here, the most important highlights of the OS/390 UNIX installation are discussed. For a detailed description of the installation part of UNIX System Services, examine the OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. In the third chapter of this redbook you will find a step-by-step guide to implement and customize UNIX System Services on OS/390. OS/390 UNIX System Services files are organized in a hierarchy, as in a UNIX system. MVS views an entire file hierarchy as a collection of hierarchical file system data sets called HFS data sets. These HFS data sets are unloaded when you restore your ServerPac tapes to your previously initialized SMS DASD. The following steps identify the tasks that establish an HFS for the first time. SMS must be active and managing a volume prior to restoring the file system: • Implement SMS for UNIX System Services • Implement a security system for UNIX System Services OS/390 UNIX System Services 11 • Allocate and restore the HFS files • Perform post-restore activities Once you have completed all these tasks, your system will have: • A root file system that contains the products and elements that install into the root file system • Separate file systems for those products or elements that do not install into the root file system • An HFS file system mounted to the /etc directory • A BPXPRMFS member that reflects the restored file system A Web site that provides setup hints is available at URL: http://www.s390.ibm.com/os390/support/os390tst/hfs.htm 1.3.1 How UNIX System Services has changed As of OS/390 Release 3, the OMVS address space (UNIX System Services) starts automatically at IPL. Following the IPL sequence identified in this book, the first IPL starts UNIX System Services with limited function and a temporary root file system (see 1.2.2.1, “Minimum mode” on page 8). This level is usually selected by the BPXPRM00 parmlib member of a delivered parmlib (for instance, CPAC.PARMLIB): FILESYSTYPE TYPE(HFS) ENTRYPOINT(GFUAINIT) PARM(’ ’) Limited function gives you the ability to UNMOUNT the temporary ROOT file system and MOUNT your permanent ROOT file system during restore processing. Limited function does not give you all the capability full function UNIX System Services has. UNIX System Services is being started in this mode only for the purposes of the installation. The next IPL described in this section starts UNIX System Services in full-function mode with all the file systems mounted. This level is selected by the BPXPRMFS parmlib member shipped in one of the parmlibs of the installation pac (for example, CPAC.PARMLIB). 1.3.2 Implementing SMS HFS data sets must reside on System Managed Storage (SMS) DASD. To use UNIX System Services in full-function mode, SMS must be active. In this section, the goal is to define a minimal SMS environment that allows the UNIX System Services to be run. The following are the SMS implementation steps: 1. Define a volume to be SMS managed. 2. Allocate the SMS control data sets. 12 Debugging UNIX Applications on OS/390 3. Set up your user ID as storage administrator. 4. Define a base configuration. 5. Define a storage class. 6. Define a storage group. 7. Define volumes in a storage group. 8. Create ACS routines. 9. Translate ACS routines. 10. Update parmlib. 11. Activate SMS. 12. Activate the configuration. The following sections describe the above SMS implementation steps in more detail. The instructions listed are used to activate DFSMS with minimal configuration. You should also refer to DFSMS/MVS Implementing System-Managed Storage, SC26-3123, for more information about activating SMS. 1.3.2.1 Defining a volume to be SMS managed The first step to activate System Managed Storage (SMS) is the preparation of DASD volume(s) for SMS storage groups. Use the Device Support Facility (ICKDSF) product to initialize DASD volumes to be SMS managed. The STORAGEGROUP keyword of the INIT command is used to make a DASD volume available for the allocation of the new system-managed data sets. Here is an example: INITUNITADDRESS(01C6)PURGENOVERIFYDEVTYPE(3390)VOLID(VS17SM)VTOC(9,1,38)INDEX(0,3,76)STGR Note If your OS includes DFP 3.3, use the SG keyword instead of the STGR keyword. 1.3.2.2 Allocating the SMS control data sets Before you can activate an SMS configuration, there are three types of SMS control data sets that are required: • CDS—source control data set • ACDS—active control data set • COMMDS—communications data set Usually these data sets are allocated when you restore your target and distribution data sets. In the corresponding SAMPLIB of your pac (for instance, OS/390 UNIX System Services 13 CPAC.SAMPLIB) there are examples provided on allocating the SMS control data sets. Table 1. Sample jobs Job name Description SMSSCDS Define an SCDS data set SMSACDS Define an ACDS data set SMSCOMS Define a COMMDS data set 1.3.2.3 Setting up your user ID as storage administrator To perform certain definitions, the user must be set up as a storage administrator for ISMF. 1.3.2.4 Defining the SMS base configuration The base configuration contains installation defaults and identifies the systems to which the SMS configuration applies. 1.3.2.5 Defining a storage class A storage class is a list of performance objectives and availability requirements. Each storage class represents a list of services that are available to data sets and objects having similar access requirements. For a detailed description see Chapter 3 of OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. 1.3.2.6 Defining a storage group Storage groups represent the physical storage managed by SMS. Each storage group is a collection of physical devices, virtual input/output, (VIO) or dummy volumes defined by the storage administrator. For a detailed description see Chapter 3 of OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. 1.3.2.7 Defining volumes in a storage group The next step is to define a list of volumes in the previously defined storage group. For a detailed description see Chapter 3 of OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. 1.3.2.8 Creating ACS routines The following example shows storage class and storage group routines that will be used to restore the HFS data sets to your SMS volumes: Example: Storage Class ACS Routine PROC STORCLAS SELECT WHEN (&DSNTYPE = ’HFS’) /*select HFS data sets */ SET &STORCLAS = ’OMVS’ OTHERWISE SET = ’ ’ END END /* end of storage class routine proc */ 14 Debugging UNIX Applications on OS/390 In the preceding routine, SMS manages any data set that has a a data set type of HFS, puts these data sets in the Storage Class OMVS and on the SMS-managed volume that was defined. All other data sets in this routine are not SMS managed. In the following routine, all SMS-managed data sets reside in the storage group OMVS which was previously created. Example: Storage Group ACS Routine PROC STORGRP SET &STORGRP = ’OMVS’ END 1.3.2.9 Translating ACS routines The ACS routines need to be translated into object form and placed in the SCDS. For a detailed description see Chapter 3 of OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. 1.3.2.10 Updating PARMLIB The following parmlib members need to be updated with the corresponding information: Table 2. Parmlib members Member Description IGDSMSxx This member should contain the names of the ACDS and COMMDS data sets you previously defined. IEFSSNxx This member identifies SMS as a subsystem to MVS (OS/390). To ensure that SMS starts before the primary subsystem, the SMS record is placed before the primary subsystem’s (JES2 or JES3) record. 1.3.2.11 Activating SMS The SMS subsystem is activated during the initial IPL sequence because of the subsystem identification in member IEFSSNxx. 1.3.2.12 Activating the configuration The SMS configuration is activated during the initial IPL sequence. 1.3.3 Implementing a security system for UNIX System Services The following security actions should have been established in the RACF database. For more information, refer to UNIX System Services Planning, SC28-1890. This is an example of tasks that should have been performed: 1. Defined user with OMVS segment and superuser authority for OMVS tasks 2. Defined terminal group name tty for OMVS access 3. Changed SYS1 group to enable UNIX System Services access 4. Defined the OMVS Cataloged Procedure to RACF by using both of the following methods: a) RACF started procedure table (module ICHRIN03) b) RACF started facility class OS/390 UNIX System Services 15 1.3.4 Allocating and restoring the HFS files With ServerPac/SystemPac installs, you should run the jobs that are supplied. These jobs are new since OS/390 V2R6. Two jobs are supplied to allocate and restore the HFS files as follows: Table 3. Jobs for allocating and restoring HFS files Job name Description ESTABFS This job allocates HFS data sets that are defined in your installation variables option of the installation dialog. The job also mounts the new root file system, creates mount points, and mounts any additional file system. Note: When running this job, you may encounter the IRA200E AUXILLIARY STORAGE SHORTAGE message. It is recommended to allocate a second local page data set prior to submitting this job. RESTFS This job mounts the transient file system, which contains the files needed for the restore operation. It then restores those files into the root file system. Note: This job may end with an RC=12 if the transient file system is already mounted. 1.3.5 Performing HFS post-restore activities To complete the installation process, you need to perform post-restore activities. The activities that you need to perform will vary depending on the elements that you are installing. There are some tasks that appear only when certain products or elements are ordered, for example, the need to set HFS symbolic links may be required. The following shell initialization files have to be copied from the /samples directory to your /etc directory if you want to customize the shell initialization or the user wide shell environment: Table 4. Shell initialization files Files Description /etc/init.options UNIX System Services initialization options file /etc/profile System-wide profile for shell users /etc/rc Default initialization shell script file For more details on the files in Table 4 refer to 1.4.1.1, “The Shell initialization files and user profiles” on page 17. 16 Debugging UNIX Applications on OS/390 1.4 Debugging OS/390 UNIX System Services This section is the main part of the OS/390 UNIX System Services chapter. The most frequently asked questions and problem situations are discussed; the first part provides useful hints and tips to work with and to debug OS/390 UNIX. The second part handles known problems and possible solutions. 1.4.1 Hints and tips Some hints and tips in the USS area follow. 1.4.1.1 The Shell initialization files and user profiles When OS/390 UNIX is started, initialization includes running the /etc/init program. If this program is not found, OS/390 UNIX attempts to run /usr/sbin/init. This file contains the default initialization program shipped with OS/390 UNIX Shell and Utilities. Table 5. Files associated with /etc/init Files Description /bin/sh Default shell that /etc/init invokes to execute /etc/rc or another shell script specified in /etc/init.options /etc/init.options Initialization options file, which is read by /etc/init /etc/rc Default initialization shell script There are two types of profiles where an authorized administrator, respectively the OS/390 UNIX user, is able to define specific options: Table 6. Profiles Profiles Description /etc/profile System-wide user profile. Any time a user invokes the OS/390 UNIX shell, the options specified there become active for this user. /$HOME/.profile User-specific profile. Any user who has a .profile in his or her HOME directory may specify individual options here. These options may be additional to the specifications in /etc/profile or may overwrite parameters defined there. The read/load sequence from starting OS/390 UNIX (IPL) up to the ready-to-work state of a user who invoked the shell follows: • Start OS/390 UNIX automatically during IPL. • Does /etc/init exist? OK: Run /etc/init. NO: Run /usr/sbin/init. • /etc/init invokes /bin/sh, the default shell. • /etc/init reads /etc/init.options. • /etc/init runs the initialization shell script specified in /etc/init.options. This is the sequence for every OS/390 UNIX IPL. When a user invokes the OS/390 UNIX shell by running the TSO OMVS command the following happens: OS/390 UNIX System Services 17 • Is there a .profile file in the user’s home directory? NO: Use the options specified in /etc/profile for this user. YES: Use the options specified in this .profile for this user plus the options out of /etc/profile if not overwritten by the corresponding parameter in the .profile. 1.4.1.2 Setting the time zone The time zone is an environment variable used by the time service to set the correct time for OS/390 UNIX and applications running on OS/390 UNIX. Since it is possible to specify this variable in four different files, we will clarify here which application is affected by which setting. At first, it is recommended to have a time zone (TZ) specification active in /etc/init.options and /etc/profile. If there are daemons to start using the /etc/rc script, export the TZ variable there before starting the daemons. A TZ setting in /etc/rc is only valid for jobs started in this script file at system initialization time—as the INETD, for example. A TZ setting in /etc/init.options is only valid for all processes that are active at OS/390 UNIX kernel initialization time. Settings here have no effect on what the user will get when asking for the time (for instance, by issuing the date shell command) after entering the shell. The /etc/profile is the system-wide profile for shell users. The TZ variable may be set here simply by specifying TZ=<value>. This value becomes active every time a user invokes the OS/390 UNIX shell. Since this is a system-wide profile you need to have the permission to update /etc/profile if you want to change the value of TZ here. Every user has the chance to create a .profile in his HOME directory and to overwrite variables of /etc/profile here. Therefore, it is possible to specify another TZ value here than in the /etc/profile. If the corresponding user invokes the OS/390 UNIX shell again for the next time, this TZ value is the valid one for this user. Note For many users it may not be necessary to have an individual HOME directory for their own use. Many installations specify /usr as the HOME directory for every TSO user who has an OMVS segment and is allowed to enter the OS/390 UNIX shell. If there is a .profile in /usr, every user will inherit the settings of this profile. If there was no TZ setting in either of these files, time conversions behave as if TZ was set to TZ=UTC0 (Universal Time Coordinated). 18 Debugging UNIX Applications on OS/390 The format of the TZ variable recognized by the tzset() kernel function is as follows: <std><offset><dst><offset>,<rule> Where std and dst indicate neither less than three, nor more than TZNAME_MAX bytes that are the designation for the standard (std) and summer (dst - daylight saving time) time zones. If more than TZNAME_MAX bytes are specified for std or dst, tzset() truncates to TZNAME_MAX bytes. Only std is a required parameter. If its setting is less than three bytes, the whole TZ value is invalid and UTC0, respectively GMT0, becomes active. offset indicates the value to add to the local time to arrive at Universal Time Coordinated. The offset has the following format: <hh<mm ss>> where minutes and seconds are optional. The hour (hh) is required. rule indicates when to change to and back from summer time. The rule has the form: <date/time,date/time> where the first date describes when the change from standard to summer time occurs and the second date describes when the change back happens. The format of the date must be one of the following: Jn The Julian day n (1-n-365). Leap days are not counted. In all years, including leap years, February the 28th is day 59 and March the 1st is day 60. It is impossible to explicitly refer to the 29th of February. n The zero-based Julian day n (0-n-365). Leap days are counted and it is possible to refer to the 29th of February. Mm.n.d The dth day of the week n of month m of the year (1-n-5 and 1-m-12 and 0-d-6, where week 5 may occur for the last days of a month). Week 1 is the first week in which the dth day occurs. Day zero is Sunday. The time has the same format as offset except that no leading sign, minus (-) or plus (+) is allowed. The default, if no time was specified, is 02:00:00. If dst is specified and the rule is not specified by TZ, the default for the summer time start date is M4.1.0 and for the summer time end date is M10.5.0. Examples: • For users located in Boston or New York, the value of the TZ variable should be EST5EDT. EST means Eastern Standard Time, five hours to add (west) to arrive GMT. EDT means Eastern Daylight Time which is four (5 minus 1). OS/390 UNIX System Services 19 • For users located in Germany, the value of the TZ variable is MEZ-1MESZ,086,286. MEZ is the abbreviation for Mitteleuropaeische Zeit and is one hour east of GMT. MESZ is the name of the zone during daylight saving time. The value 086 is the zero-based Julian date that describes when the daylight saving time starts and the 286 value when it ends. 1.4.1.3 OS/390 UNIX Component Trace OS/390 UNIX uses the OS/390 (MVS) Component Trace (CTRACE) facility. OS/390 UNIX registers itself to OS/390 as a traceable component of OS/390. It is up to the component, in this case OS/390 UNIX, to determine when and what kind of data is written to the component trace. The OS/390 UNIX parmlib members are used not only to turn on component tracing for OS/390 UNIX, but specify which OS/390 UNIX functions are to be traced. OS/390 UNIX initialization, when finding out that component tracing is requested, sets up a data space, referred to as SYSZBPX1, which is associated with the OS/390 UNIX kernel address space. What kind of information is in a USS Component Trace? Generally, OS/390 UNIX provides CTRACE records for the following OS/390 UNIX functions: • chars • devpty • file • ipc • lock • pipe • process • ptrace • signal • storage • syscall For a more detailed description of each function traced for OS/390 UNIX, refer to OS/390 MVS Diagnosis: Tools and Service Aids, SY28-1085. How to request an OS/390 UNIX Component Trace When OS/390 UNIX starts, the trace automatically starts. The trace cannot be completely turned off while OS/390 UNIX is running. The OS/390 UNIX parmlib member CTnBPXxx specifies what functions specifically are to be traced. The particular CTnBPXxx parmlib member read is pointed to from the ’CTRACE(CTnBPXxx)’ statement in the BPXPRMxx parmlib member. The CTnBPXxx parmlib member also specifies the size of the trace buffers. You cannot change this size while OS/390 UNIX is running. Your BPXPRMxx parmlib member, which is the main parmlib member for OS/390 UNIX initialization, checks the CTRACE statement to see what CTnBPXxx member is to be checked for CTRACE specifications. There are two areas that 20 Debugging UNIX Applications on OS/390 you would typically need to alter in CTnBPXxx to request that OS/390 UNIX writes component trace records: • size - enter a buffer size here /*--------------------- */ BUFSIZE(4M) /*--------------------- */ • trace options /*----------------------------------------- */ /* OPTIONS: NAMES OF FUNCTIONS TO BE TRACED */ /*----------------------------------------- */ /* OPTIONS( ’ */ /* ’ALL ’ */ /*,’CHARS ’ */ /*,’DEVPTY ’ */ /*,’FILE ’ */ /*,’IPC ’ */ /*,’LOCK ’ */ /*,’PIPE ’ */ /*,’PROCESS ’ */ /*,’PTRACE ’ */ /*,’SIGNAL ’ */ /*,’STORAGE ’ */ /*,’SYSCALL ’ */ /* ) */ To allow component tracing, you need to remove the comment (/* */) on the following lines: • OPTIONS line • The ’)’ line • Whatever function line(s) you wish to affect Once OS/390 UNIX starts with the appropriate OS/390 UNIX functions writing component trace entries to the OS/390 UNIX data space, you can stop the tracing using the OS/390 trace command: TRACE CT,OFF,COMP=SYSOMVS You can also resume tracing with any CTnBPXxx parmlib member using: TRACE CT,ON,COMP=SYSOMVS,PARM=CTnBPXxx Finally, you can use the display command to find information about tracing: DISPLAY TRACE,COMP=SYSOMVS Obtaining OS/390 UNIX Component Trace data The OS/390 UNIX CTRACE data is written to OS/390 UNIX data space SYSZBPX1. Usually it is OS/390 UNIX support that asks for this data to interpret. Once this data is collected, you should dump both the OS/390 UNIX address space and the OS/390 UNIX data space together: DUMP COMM=(OMVS - or your own dump description) R#,SDATA=(CSA,SQA,LPA,RGN,TRT,GRSQ) R#,JOBNAME=OMVS,DSPNAME=(’OMVS’.*),END OS/390 UNIX System Services 21 You may replace the JOBNAME parameter with the ASID parameter. If you issue the following command you will find out the hexadecimal address space identifier of the OMVS address space in the ’A=’ field: DA,OMVS Formatting the OS/390 UNIX Component Trace Data You can use the IPCS subcommand ’CTRACE’ to format out the OS/390 UNIX trace data from the dump: CTRACE COMP(SYSOMVS) FULL or CTRACE COMP(SYSOMVS) SUB((KERNINFO)) FULL You will find more information in OS/390 MVS Interactive Problem Control System (IPCS) Commands, GC28-1754. Other documentation for OS/390 UNIX Component Trace Other references for OS/390 UNIX component tracing are: • II08038 - Informational APAR • OS/390 MVS Diagnosis: Tools and Service Aids, SY28-1754 1.4.1.4 Useful OS/390 UNIX commands To monitor the actual status of the OMVS address space there are some display commands that provide you with lots of information. The OS/390 operator can use the DISPLAY command to obtain: • OS/390 UNIX System Services status information (for example, active or terminating) • Hierarchical File System (HFS) information • OS/390 UNIX System Services processes information for address spaces • The current setting for all OS/390 UNIX System Services parmlib statements • Information about multiple parmlib members You can use this command to display address space information for a user who has a process that is hung. You can also use the information returned from this command to determine how many address spaces a TSO/E user ID is using, whether an address space is using too many resources, and whether a user’s process is waiting for an OS/390 UNIX kernel function to complete. Displaying Summary D OMVS,S The command, D OMVS,S, displays status of OS/390 UNIX processes, file systems, and servers (for example, active or terminating) and the BPXPRMxx parmlib member specified during initialization or specified by the SET OMVS= OS/390 UNIX System Services command. The output of this command looks like the following: RESPONSE=******* (the corresponding system image symbol) BPXO042I 10.31.10 DISPLAY OMVS 939 OMVS 000E ACTIVE OMVS=(00) 22 Debugging UNIX Applications on OS/390 The OMVS= field describes which BPXPRMxx member was taken during initialization; in this case BPXPRM00. Also you can see the address space identifier x’E’. Displaying ASID D OMVS,A=ALL or D OMVS,A=xx This command displays process information for all OS/390 UNIX System Services address spaces. The output of this command should look like: RESPONSE=******* (the corresponding system image symbol) BPXO040I 10.40.12 DISPLAY OMVS 113 OMVS 000E ACTIVE OMVS=(00) USER JOBNAME ASID PID PPID STATE START CT_SECS BPXOINIT BPXOINIT 0077 1 0 MKI 11.36.57 .460 LATCHWAITPID= 0 CMD=BPXPINPR SERVER=Init Process AF= 0 MF=65535 TYPE=FILE In this case the specific information for address space x’77’ was requested, the BPXOINIT address space. Using ASID=ALL in the DISPLAY command you will get information about all OMVS-related address spaces. If the ASID specified is not OMVS related you will get an error message. Displaying user ID D OMVS,U=<UID> This command displays process information for all processes associated with the specified TSO/E user ID. Use this operand when a user requests that a hung process be canceled. You can display all processes owned by the user and find the address space ID of the process that needs to be canceled. Then use the CANCEL command to cancel the address space. The output of this command looks like the following: RESPONSE=******* (the corresponding system image symbol) BPXO040I 10.50.45 DISPLAY OMVS 346 OMVS 000E ACTIVE OMVS=(00) USER JOBNAME ASID PID PPID STATE START TEST TEST 008F 117440522 1 1RI 10.19.48 LATCHWAITPID= 0 CMD=EXEC TEST TEST 008F 67108876 117440522 1CI 10.22.39 LATCHWAITPID= 0 CMD=-sh CT_SECS 3.745 3.745 In this case you can see information about the user TEST and about all processes that are owned by this user. There are two processes identified by a different process ID but the same address space identifier x’8F’. This means all processes started by user TEST are running in the same address space. In our example the first process is the parent process and the second one is its child. OS/390 UNIX System Services 23 Displaying a specific process D OMVS,PID=<processID> This command displays thread information for the processID that is specified in decimal numbers. The output of the command looks like: RESPONSE=****** (the corresponding system image symbol) BPXO040I 10.59.58 DISPLAY OMVS 563 OMVS 000E ACTIVE OMVS=(00) USER JOBNAME ASID PID PPID STATE START CT_SECS TEST TEST 008F 67108876 117440522 1CI 10.22.39 3.748 LATCHWAITPID= 0 CMD=-sh THREAD_ID TCB§ PRI_JOB USERNAME ACC_TIME SC STATE 0DCBCF9000000001 0079C498 OMVS .219 RED C In this case the thread information for process 67108876 was requested. Displaying options D OMVS,O This command displays all options that can be set in the parmlib member BPXPRMxx. The output of this command should look like: RESPONSE=******* (the corresponding system image symbol) BPXO043I 11.05.04 DISPLAY OMVS 822 OMVS 000E ACTIVE OMVS=(00) OPENEDITION MVS CURRENT CONFIGURATION SETTINGS: MAXPROCSYS=200 MAXPROCUSER=200 MAXFILEPROC = 2000 MAXFILESIZE= NOLIMIT MAXCPUTIME = 2147483647 MAXUIDS= 50 MAXRTYS = 256 MAXPTYS= 256 MAXMMAPAREA = 4096 MAXASSIZE = 2147483647 MAXTHREADS =500 MAXTHREADTASKS = 500 MAXCORESIZE = 4194304 MAXSHAREPAGES = 2048000 IPCMSGQBYTES= 262144 IPCMSGQMNUM = 10000 IPCMSGNIDS= 500 IPCSEMNIDS = 500 IPCSEMNOPS= 25 IPCSEMNSEMS= 25 IPCSHMMPAGES= 256 IPCSHMNIDS= 500 IPCSHMNSEGS= 200 IPCSHMSPAGES= 786432 SUPERUSER= BPXROOT FORKCOPY= COPY STEPLIBLIST= /system/steplib USERIDALIASTABLE= PRIORITYPG VALUES: NONE PRIORITYGOAL VALUES: NONE 24 Debugging UNIX Applications on OS/390 In this case all active options specified in the BPXPRM00 member were displayed, yet there is one exception. If the system administrator used the SETOMVS or SET OMVS command to change any of the options, then the new value is displayed here and not the value out of the member. So this command always displays the currently active options. Using the Modify command to cancel the BPXAS OMVS address spaces Prior to OS/390 V1R3, it was known that OMVS should be stopped before attempting to stop JES2. When OMVS was stopped, it took down the colony address spaces that could prevent bringing down JES2 properly. With "PERMKERN" in OS/390 V1R3 and forward, OMVS is brought up at IPL and cannot be stopped, canceled, or forced. The colony address spaces that it started must be stopped or canceled in order for JES2 to come down properly, since they are not coded SUB=MSTR when started and use JES2 for some functions. The operator instructions for cleaning up before stopping JES2 must now be changed to include stopping or canceling the colony address spaces started using the BPXPRMxx parmlib member. Those are the FILESYSTYPEs which include ASNAME(procname). The colony address spaces are those specified by ASNAME(procname). The JES2 command $DA,X displays all jobs (JOBs/STCs/TSUs) that are active in execution on the JES2 member on which the command is issued. The colony address spaces that need to be stopped or canceled to bring down JES2 properly will be shown in this display. The batch initiators running under JES2 all have the name of INIT. These are stopped automatically by JES2. SYSLOG will have the name of SYSLOG and is automatically stopped by JES2. For the OMVS colony address spaces, whether the STOP command is supported or the address space must be canceled is defined by the component owner of that procedure and is documented in the owner’s publications. The command D OMVS,A=ALL will show all the OMVS processes that are running. Any of those using JES2 resources must be stopped or canceled before stopping JES2. In OS/390 V2R4 and following releases, the Modify command must be used to cancel the BPXAS OMVS address spaces. After issuing the command $P JES2, the message HASP0607, MSGHASP607 JES2 NOT DORMANT, ACTIVE PROCESSES OR ADDRESS SPACES, RC=03 comes up. In this case use the following command to cancel the address spaces that caused this message: F BPXOINIT,SHUTDOWN=FORKINIT This will cancel all remaining BPXAS address spaces and will allow you to purge JES2. Displaying OMVS data out of a dump If there is any problem with OS/390 UNIX or any corresponding application and the system automatically dumps the OMVS-related address spaces or if you request a dump of the OMVS-related address spaces using the DUMP console command as previously described, you have the chance to format the most important OMVS-related information using the following IPCS command: OMVSDATA OS/390 UNIX System Services 25 This will format diagnostic reports about OS/390 UNIX users and resources. OMVSDATA divides the information about OS/390 UNIX into six reports. Each report corresponds to the following OMVSDATA keywords: Table 7. OMVSDATA keywords Keywords Description COMMUNICATIONS Information about pseudoterminal user connections and OCS remote terminal connections. FILE Information about each OS/390 UNIX file system type and its mounted file systems. IPC Information about interprocess communication activity for shared memory, message queues, and semaphores. NETSTAT Information about eNetwork Communications Server High Speed Access Services (HSAS). The NETSTAT report type has six further subtypes: SOCKETS (default), ROUTE, INTERFACE, PERFORMANCE, STATISTICS and MEMORY. PROCESS Information about kernel processes. STORAGE Information about the storage manager cell pools. PROCESS is the default here. For each report type, you can select one or more of the following levels: Table 8. Report type levels Levels Description SUMMARY Summary information for each requested report type. SUMMARY is the default if no level is specified. EXCEPTION Diagnostic information for error or exceptional conditions for each requested report type. DETAIL Detailed information for each requested report type. For each report, you can select one or more of the following filtering keywords to limit the amount of data in the report: Table 9. Filtering keywords 26 Keywords Description ASIDLIST(asidlist) Requests that information be provided for the asids specified in asidlist. ASIDLIST(asidlist) can be specified either as a single ASID or as a range of ASIDs. When a range is specified, the two ASIDs (first and last in the range) must be separated by a colon. The ASID can range from 1 through 65 535. ASID can be expressed using the notation X’nnn’, F ’nnn’, or B’nnn’. An unqualified number is assumed to be fixed. The alias is ASID. USERLIST(userlist) Requests that information displayed be restricted to that associated with the user IDs specified in userlist. The contents of userlist may contain one or more user IDs, separated by commas. USERLIST (userlist) can be specified as a 1-to-8-character name. The alias is USER. Debugging UNIX Applications on OS/390 Keywords Description PROCESSID For the NETSTAT Sockets and NETSTAT Detail report types only. Requests that information be provided for a single PID. PROCESSID may contain up to eight hexadecimal characters. The OMVSDATA report header prefixes all the reports provided by the OMVSDATA command. It appears regardless of the OMVSDATA options that are selected. The selected OMVSDATA options are displayed followed by system information pertinent to all reports. For a more detailed description of the OMVSDATA IPCS command see OS/390 MVS Interactive Problem Control System (IPCS) Commands, GC28-1754. 1.4.1.5 Interpreting OS/390 UNIX return and reason codes In some cases OS/390 UNIX System Services Application Services may issue OS/390 UNIX-related error messages which contain a two-byte return code and a four-byte reason code. Using the OS/390 UNIX System Services Messages and Codes manual and having a look at the return codes description may show enough information to find the reason for the error message. If the return code description is not sufficient to find the error, you have the chance to use the reason code to come closer to the error. The reason code itself is a four-byte character and usually delivered by register 15 at the time of error. This reason code is divided into the left most two bytes and the right most two bytes. The value of the left most two bytes is responsible for the type of the reason code. See also OS/390 UNIX System Services Messages and Codes, SC28-1908, and Chapter 2, “Lotus Domino for S/390—troubleshooting/hints/tips” on page 33 in this redbook. Example: An OS/390 UNIX-related application abnormally ends with an ABENDEC6, reason code 0BFC0012 and the return code is 9C. The return code describes a Process initialization error and does not point out what the problem is. The content of the two left most bytes is 0BFC. This means we will have to look at the OS/390 UNIX reason codes. The content of the right most two bytes is 0012. Having a look at the OS/390 UNIX reason codes, you will find the following description for 0012: JRMaxChild - The maximum number of processes for this user ID has been exceeded. In this example, there was an OS/390 UNIX user or application that tried to initiate a child process using the fork() or spawn() kernel function, but the number of processes for this user ID has been exceeded. So you either have to increase the MAXPROCUSER parameter in the BPXPRMxx member or, if this value is already high enough, you have to look for this user ID and to find out what kind of processes this user invokes. You may use the following command: D OMVS,U=<userID> This command finds all the processes related to this ID. OS/390 UNIX System Services 27 1.4.2 Common problems In the following sections, some known problems and possible pitfalls are discussed. 1.4.2.1 The "Root Permission" problem In some cases a TSO/E user who tries to invoke the OS/390 UNIX shell may suffer the following problem after entering ’TSO OMVS’ : The OMVS command cannot use the message catalog.+ No session was started. No pseudo-TTYs are available.+ Function = catopen(), catalog name = ’/usr/lib/nls/msg/C/fsumucat.cat’, return value = -1, errno = 111 (X’0000006F’), reason code = 5B150043, description = ’EDC5111I Permission denied.’ Function = stat(), ending name = ’/dev/ptyp0000’, return value = -1, errno = 11 1 (X’0000006F’), reason code = 5B1D0043, description = ’EDC5111I Permission denied.’ *** The reason for this problem is pretty simple. If you are installing OS/390 UNIX, there is one step to specify and allocate the new root file system. This new root file system will be allocated with the permission bits of 700 by default. This means only the owner of this file system is allowed to access it. All other users cannot access it after invoking the OS/390 UNIX shell. You can change the permission bits of the root file system to 755 by using the OS/390 UNIX ISPF shell if you are authorized to do this. 1.4.2.2 Problems caused by the MAXFILESIZE parameter Some OS/390 UNIX users that tried to install maintenance into the HFS suffered the following problem. During the apply of the corresponding PTFs (maybe for another component like TCP/IP) the following message occurred: BPXF106E RETURN CODE 0077, REASON CODE 7FFCC000. AN ERROR OCCURED DURING THE WRITING TO HFS FILE <pathname> Since this reason code is not described anywhere, you will have to look at the return code. The description states, The file is too large. What will solve this problem? In your BPXPRMxx member there is a parameter called MAXFILESIZE. If the file to install is greater than the value specified there the message above will occur. The solution is either to specify a value that is high enough (for example the maximum of 524228) or to specify MAXFILESIZE=NOLIMIT. Another error that is solved by the same parameter is the following. OS/390 UNIX users suffered an ABENDEC6 with a reason code of 0000FD1E. This reason code is described nowhere, but the solution is the MAXFILESIZE parameter again. There is no recommendation about a specific value of the MAXFILESIZE parameter. Specifying MAXFILESIZE=NOLIMIT will protect you from problems as described but will not protect your HFS from being increased. 1.4.2.3 Problems during OS/390 UNIX installation Very often OS/390 UNIX users report problems during OS/390 UNIX installation. Prior to OS/390 V2R6 there were two jobs called HOT11xxB and HOT11xxC depending on the version of OS/390 UNIX. The first job allocates the new root file system and the second one fills in all the functions and directories into the file system. Most of the problems occurred with the second job because it is only possible to copy all the files to the file system if OS/390 UNIX was started in full 28 Debugging UNIX Applications on OS/390 function mode previously. So there has to be an OMVS=xx statement in the IEASYSxx parmlib member to specify the BPXPRMxx member that contains the initialization parameters of OS/390 UNIX. The BPXPRMxx member should contain the corresponding FILESYSTYPE statement to start the HFS and, if the corresponding root file system was allocated successfully, it should contain the ROOT specification. You may check the status of OS/390 UNIX by entering the D OMVS,F operator command. This will show you in the OMVS= field whether OS/390 UNIX was started in DEFAULT mode or whether a BPXPRMxx member was used during initialization. Furthermore, you will see whether a temporary file system was mounted or the new root file system is specified. In OS/390 V2R6 and above, the two new jobs are ESTABFS and RESTFS and they may end unsuccessfully for the same reason. 1.4.2.4 Insufficient memory One of the most frequent problems that might occur is because of insufficient memory, so many OS/390 UNIX users ask: I am getting an insufficient memory message, how can I determine the value specified for my region size? The answer is: If you are using the TSO OMVS command, your region size when coming in through TSO is the REGION size you specify on your logon panel. For batch, your region size is the REGION parameter in the JOB or STEP. If you are running through rlogin or telnet, ask your system programmer about increasing MAXASSIZE in the BPXPRMxx parmlib member. A Web CGI process also gets its region size from the MAXASSIZE in the BPXPRMxx parmlib member. However, if your installation has an IEFUSI exit that changes region size, then the kernel will honor whatever the exit requested. For example, you could have MAXASSIZE set to 100M, but if your IEFUSI exit changes that to 40M, then you get 40M. Because of the way fork() works with IEFUSI exits, IEFUSI sees the region size for a new job before the kernel can propagate the region size from the parent. To prevent IEFUSI from seeing a region size of 0, see APAR OW32459 where a solution is shown. This change was made in Release 6. Users are encouraged to bypass IEFUSI processing for address spaces in the OMVS subsystem. This can be done in either of the following ways: • Exclude IEFUSI from processing address spaces in the OMVS SUBSYS. This is done by modifying the SMFPRMxx parmlib member. • The IEFUSI exit can recognize when it is running in an OMVS SUBSYS address space and just leave the region size alone. There is also a page on the Internet that contains the most frequently asked questions. If you go to http://www.s390.ibm.com/products/oe/ and if OS/390 UNIX System Services 29 you select FAQ on the left bar, you will find lots of questions asked by OS/390 UNIX end users and solutions provided by IBM. 1.5 UNIX System Services dump processing For some problems in a UNIX System Services environment it may be helpful to have a dump including the data spaces. These kinds of problems may be a hang or enqueue problem. 1.5.1 How to provide a dump Before you enter the dump command, check the address space ID or the job name of the UNIX System Services address space using SDSF option DA display active users. Now issue the console command DISPLAY DUMP (/D D) to get the dump data set status information. You receive the following output: ISFPCU41 ---------------- SDSF PRIMARY OPTION MENU -- COMMAND ISSUED COMMAND INPUT ===> /D D SCROLL ===> CSR RESPONSE=SC63 IEE852I 09.11.44 SYS1.DUMP STATUS 859 SYS1.DUMP DATA SETS AVAILABLE=002 AND FULL=001 CAPTURED DUMPS=0000, SPACE USED=00000000M, SPACE FREE=00001536M AUTOMATIC ALLOCATION IS: ACTIVE NO SMS CLASSES DEFINED AVAILABLE DASD VOLUMES: SBOX03 NAME=DUMP.D&MON.&DAY..H&HR..&SYSNAME..&JOBNAME..S&SEQ. EXAMPLE=DUMP.D0729.H13.SC63.#MASTER#.S00000 SYS1.DUMP AVAILABLE DASD DATA SETS : 01,99 SYS1.DUMP FULL DASD DATA SETS : 00 If there are no empty dump data sets, you can issue the following commands to clear one or all dump data sets: •DD CLEAR,DSN=00 Clear one (00) data set • DD CLEAR,DSN=ALL Clear all data sets It is very important to display the dump options. If you do not request useful dump options, for example, CSA, RGN, etc., the dump may not be useful. Display the dump options using the DISPLAY DUMP,OPTIONS command which shows the following: 30 Debugging UNIX Applications on OS/390 ISFPCU41 ---------------- SDSF PRIMARY OPTION MENU -- COMMAND ISSUED COMMAND INPUT ===> /D D,O SCROLL ===> CSR RESPONSE=SC63 IEE857I 09.22.54 DUMP OPTION 862 SYSABEND- ADD PARMLIB OPTIONS SDATA=(LSQA,TRT,CB,ENQ,DM,IO,ERR,SUM), PDATA=(SA,REGS,LPA,JPA,PSW,SPLS) SYSUDUMP- ADD PARMLIB OPTIONS SDATA=(SUM), NO PDATA OPTIONS SYSMDUMP- ADD OPTIONS (NUC,SQA,LSQA,SWA,TRT,RGN,LPA,CSA,SUM,ALLNUC, GRSQ) SDUMP- ADD OPTIONS (ALLPSA,SQA,LSQA,RGN,LPA,TRT,CSA,SWA,SUMDUMP, ALLNUC,Q=YES,GRSQ,COUPLE,XESDATA),TYPE=(XMEME), BUFFERS=00000000K,MAXSPACE=00001536M, MSGTIME=99999 MINUTES SYSFAIL NO STRLIST OPTIONS To request a dump, enter: • DUMP COMM=(dump title) for example (OMVS) • reply id,JOBNAME=OMVS,DSPNAME=('OMVS'.*),END The reply ID is shown after issuing the DUMP command ('OMVS'.*) means: dump all address spaces belonging to UNIX System Services. Note After the dump processing ends, you should get a Dump complete message. Here is the complete SYSLOG output: COMMAND INPUT ===> /DUMP COMM=(OMVS) *14 IEE094D SPECIFY OPERAND(S) FOR DUMP COMMAND R 14,JOBNAME=(OMVS),DSPNAME=('OMVS'.*),END IEE600I REPLY TO 14 IS;JOBNAME=(OMVS),DSPNAME=('OMVS'.*),END IEA794I SVC DUMP HAS CAPTURED: 630 DUMPID=001 REQUESTED BY JOB (*MASTER*) DUMP TITLE=OMVS IEF196I IGD100I 01D2 ALLOCATED TO DDNAME SYS00006 DATACLAS ( IEF196I IEF285I SYS1.MCEVSM.DMP00001 IEF196I IEF285I VOL SER NOS= VSMCAT. IEA611I COMPLETE DUMP ON SYS1.MCEVSM.DMP00001 634 DUMPID=001 REQUESTED BY JOB (*MASTER*) FOR ASID (000E) ) CATALOGED For useful hints about IPCS commands to debug the dump or for a quick check, refer to MVS Diagnosis: Reference, LY28-1084 (available to IBM licensed customers only). OS/390 UNIX System Services 31 32 Debugging UNIX Applications on OS/390 Chapter 2. Lotus Domino for S/390—troubleshooting/hints/tips This chapter is written especially for those people who spend their time working with implementing, customizing, and programming the Lotus Domino for S/390 server. In this chapter you will learn what to do in case of errors shown in the MVS- or Notes-Log, how to analyze this information, and use methods to determine the source of the problem. Also some common hints and tips are covered here. We divided this chapter into logical environmental parts (OS/390, UNIX System Services, and Lotus Domino for S/390) and some common parts (Hints and Tips, Troubleshooting documents, and Information Sources). Note The following sections are mainly based on Lotus Domino Server S390 R5, but most of the troubleshooting and hints and tips parts also apply to the 4.6.x servers. Here is an overview about the logical parts discussed in this chapter: Table 10. Overview OS/390 UNIX System Services Lotus Domino Hints and Tips Troubleshooting Info Sources Domcon nsd.sh LE run-time options Editing notes.ini HTTP APARs IEFUSI Interpreting messages & codes Activating JAVA environment Cleaning up server resources SMTP Web sites Useful commands Useful commands notes.ini parameters Activating HTTP POP3 Redbooks Syslog Logs Activating POP3 Router Other... Dump options Domino console Activating SMTP Agents IPCS Programs How mail routes Calendaring & scheduling Transaction logging What info in case of error CEEDUMP More... © Copyright IBM Corp. 1999 33 2.1 OS/390 This section describes some main debugging issues for the Lotus Domino S/390 server in the OS/390 environment. 2.1.1 Domcon This section is an excerpt from the Domcon Internet site: http://www.s390.ibm.com/products/domino/domcon/dmcnmain.html To get more information about Domcon, download the related database and have a look at it. There is also a good description about Domcon in Chapter 8 of Lotus Domino for S/390 R5 Installation,Customization and Administration, SG24-2083. 2.1.1.1 Overview This package allows you to manage the Domino for S/390 server from the operator's console. Also, the Domino for S/390 console is routed and displayed on the operator's console. The OS/390 console already provides functions to switch to alternate consoles in the event it becomes disconnected; typically, OS/390 consoles are secured from unauthorized access. In addition, OS/390 functions such as SDSF and console can allow access to the OS/390 operator's console from any authorized location/user ID. The DOMCON package provides: • An automated and synchronized way to start the Domino for S/390 server with other resources at system IPL time. • Management of all Domino partitioned servers on the OS/390 image from the same console. • Remote access with SDSF/console functions with appropriate controls. • The ability for operations to send server commands to the Domino for S/390 server from the console. • Operations with the capability of performing an orderly shutdown of the Domino for S/390 server during OS/390 shutdown. • An interface to automation systems that can start, stop, or send commands to the server in response to error situations. • RACF protected data set to store Domino passwords (server.id) and the ability to automatically feed them into the server's input stream at startup. Automated startups with secure server.id files. • Synchronized S/390 resource utilization. Signal the Domino for S/390 server to start replications at the completion of the batch processing (may be variable on end-of-month or week). • An interface from UNIX Services to send commands to your Domino Servers and see the responses. RACF Surrogate authority is used to control which users can access which servers. The DOMCON package was built to be a nonintrusive monitor of your Domino for S/390 server. This means that at any point in time you can start your Domino for S/390 server without DOMCON. There are no changes to make and you will have removed this package from the startup sequence of this server. For additional 34 Debugging UNIX Applications on OS/390 information about this feature refer to the Problem Determination section in the database domcon.nsf. 2.1.1.2 Support This package is provided on an as-is basis. IBM does not offer warranty, service, or formal technical support. 2.1.1.3 Functions DOMCON provides you with the following three command processes from the S/390 operator's console: • DOMINS—used to start a Domino for S/390 server and the monitor process to route messages to the operator's console. • DOMINK—used to shut down a Domino for S/390 server. It will also stop the monitor process and clean any resources left over after a server has stopped. • DOMINC—used to send a command from the console to a Domino for S/390 server. DOMCON provides you with the following process from UNIX Services: • DOMOE—used to send (if authorized) console commands to individual Domino Servers and display its results from the server's log. 2.1.1.4 Download domcon.nsf The DOMCON package comes as part of a Notes discussion database (domcon.nsf). This discussion database will be updated on a weekly basis. Please obtain a fresh copy to review any changes, fixes, or updates that are made. To download domcon.nsf, simply press the download button on page www.s390.ibm.com/products/domino/domcon/dmcnmain.htm as shown in Figure 3 on page 36. Lotus Domino for S/390—troubleshooting/hints/tips 35 Figure 3. Downloading domcon.nsf 2.1.2 IEFUSI We have encountered many different storage problems coming up due to the use of SMF exit IEFUSI. These problems can be a simple message like insufficient memory as well as a Domino server abend with user abend code U034 RC 070E0303. This happens if IEFUSI limits or changes the region size for OMVS work. Prior to OS/390 R6, IEFUSI saw a value of 0, which implied a 2 GB region. Many customers’ IEFUSI exits saw that value and would then set the region size lower. OMVS code would then use the new region value instead of propagating the value from the parent. This caused OMVS address spaces to not run properly. In OS/390 R6, code was added to show a value of 54 MB for the region size for OMVS processes. As long as the exit did not touch the region size, OMVS would then propagate the parent's region size to the FORKed/SPAWNed process. To check if this exit is active in your environment, you can use the OS/390 system DISPLAY command as shown in Figure 4 on page 37 and Figure 5 on page 37. 36 Debugging UNIX Applications on OS/390 This is screen. COMMAND INPUT ===> /D PROG,EXIT RESPONSE=SC63 CSV460I 14.56.25 PROG,EXIT DISPLAY 131 EXIT DEF EXIT DEF EXIT SYS.IEFACTRT E SYSSTC.IEFACTRT E SYS.IEFUJI SYSSTC.IEFUJI E SYS.IEFU83 E SYSSTC.IEFU83 CSVDYLPA E IEASDUMP.QUERY E IEASDUMP.GLOBAL IEASDUMP.LOCAL E IEASDUMP.SERVER E IXC_ELEM_RESTART IXC_WORK_RESTART E IEF_ALLC_OFFLN E IEF_SPEC_WAIT IEF_VOLUME_ENQ E IEF_VOLUME_MNT E IEFDB401 IEFJFRQ E SYSSTC.IEFUSO E SYSSTC.IEFUJP SYSSTC.IEFU85 E SYSSTC.IEFU84 E SYSSTC.IEFU29 SYS.IEFU29 E SYS.IEFUTL E SYS.IEFUSO SYS.IEFUJP E SYS.IEFUSI E SYS.IEFUJV SYS.IEFU85 E SYS.IEFU84 E IRREVX01 DEF E E E E E E E E E E E Figure 4. Display of active exits COMMAND INPUT ===> /D PROG,EXIT,EXITNAME=SYS.IEFUSI,DIAG RESPONSE=SC63 CSV464I 16.03.04 PROG,EXIT DISPLAY 354 EXIT SYS.IEFUSI MODULE STATE EPADDR LOADPT LENGTH JOBNAME IEFUSI A 84197888 00000000 00000000 * Figure 5. Display of IEFUSI exit Currently, there is a recommendation in the UNIX System Services Planning book that the IEFUSI exit should not change the region size for OMVS work: Chapter - Customizing OS/390 UNIX Section - Customizing the BPXPRMxx Parmlib Member SubSection - MAXASSIZE The IEFUSI user exit can modify the region size of an address space. Users are strongly discouraged from altering the region size of address spaces in the OMVS subsystem category. 2.1.2.1 How to find your region size • If you are using the TSO OMVS command, your region size when coming in through TSO is the REGION size you specify on your logon panel. • For batch, your region size is the REGION parameter in the JOB or STEP. • If you are running through rlogin or telnet, ask your system programmer about increasing MAXASSIZE in the BPXPRMxx parmlib member. • A Web CGI process also gets its region size from the MAXASSIZE in the BPXPRMxx parmlib member. However, if your installation has an IEFUSI exit that changes region size, then the kernel will honor whatever the exit requested. For example, you could have MAXASSIZE set to 100M, but if your IEFUSI exit changes that to 40 MB, then you get 40 MB. Lotus Domino for S/390—troubleshooting/hints/tips 37 Users are encouraged to bypass IEFUSI processing for address spaces in the OMVS subsystem. This can be done in either of these two ways: 1. The IEFUSI exit can recognize when it is running in an OMVS SUBSYS address space and just leave the region size alone. The documentation for IEFUSI states that word 8 contains the subsystem name. The exit should check whether the name is OMVS, if so do nothing. 2. Exclude IEFUSI from processing address spaces in the OMVS SUBSYS. This is done by modifying the SMFPRMxx parmlib member. For more information on this refer to OS/390 MVS Installation Exits, SC28-1753, APAR OW38477, and APAR OW32459. 2.1.3 OS/390 commands There are several OS/390 system commands which can be very useful to retrieve information about system parameters being set during initialization, to check the status of processes and threads, or to change parameters dynamically. In this section, we describe some of the commands we thought were the most interesting. For a complete list of all parameters of the commands, refer to OS/390 MVS System Commands, GC28-1781. 2.1.3.1 The OS/390 DISPLAY system command You can use the OS/390 DISPLAY command to obtain: • OS/390 UNIX System Services status information (for example, active or terminating) • Hierarchical File System (HFS) information • OS/390 UNIX System Services process information for address spaces • The current setting for all UNIX System Services parmlib statements • Information about multiple parmlib members To display process information for all UNIX System Services address spaces: COMMAND INPUT ===> /D OMVS,A=ALL RESPONSE=SC63 BPXO040I 11.15.22 DISPLAY OMVS 705 OMVS 000F ACTIVE OMVS=(7C) USER JOBNAME ASID PID PPID STATE START CT_SECS OMVSKERN BPXOINIT 00FB 1 0 MR 09.42.31 8.239 LATCHWAITPID= 0 CMD=BPXPINPR SERVER=Init Process AF= 13 MF=00000 TYPE=FILE TCPIPMVS TCPIPMVS 0039 83886082 1 1R 11.29.21 117.949 LATCHWAITPID= 0 CMD=EZBTMCTL TCPIPMVS TCPIPMVS 0039 117440515 1 1F 11.29.21 117.949 LATCHWAITPID= 0 CMD=EZASASUB Figure 6. Display all UNIX System Services address spaces 38 Debugging UNIX Applications on OS/390 To display detailed file system information on currently mounted files: COMMAND INPUT ===> /D OMVS,FILE RESPONSE=SC63 BPXO044I 11.20.57 DISPLAY OMVS 768 OMVS 000F ACTIVE OMVS=(7C) TYPENAME DEVICE ----------STATUS----------TFS 6 ACTIVE NAME=/TMP PATH=/tmp MOUNT PARM=-s 500 HFS 19 ACTIVE NAME=OMVS.STYRES1.HFS1 PATH=/u/guts HFS 18 ACTIVE NAME=OMVS.DOMINO5.DOMINO4.MAIL.HFS PATH=/domino4/notesdata/mail . MODE QJOBNAME QPID RDWR READ RDWR Figure 7. Display currently mounted file systems To display all options set during initialization by the parmlib member BPXPRMXX or with the OS/390 SETOMVS command: COMMAND INPUT ===> /D OMVS,O RESPONSE=SC63 BPXO043I 11.25.33 DISPLAY OMVS 772 OMVS 000F ACTIVE OMVS=(7C) OPENEDITION MVS CURRENT CONFIGURATION SETTINGS: MAXPROCSYS = 300 MAXPROCUSER MAXFILEPROC = 65535 MAXFILESIZE MAXCPUTIME = 2147483647 MAXUIDS MAXRTYS = 256 MAXPTYS MAXMMAPAREA = 4096 MAXASSIZE MAXTHREADS = 1000 MAXTHREADTASKS MAXCORESIZE = 4194304 MAXSHAREPAGES IPCMSGQBYTES = 262144 IPCMSGQMNUM IPCMSGNIDS = 20000 IPCSEMNIDS IPCSEMNOPS = 32767 IPCSEMNSEMS IPCSHMMPAGES = 25600 IPCSHMNIDS IPCSHMNSEGS = 1000 IPCSHMSPAGES SUPERUSER = BPXROOT FORKCOPY STEPLIBLIST = USERIDALIASTABLE= PRIORITYPG VALUES: NONE MAXQUEUEDSIGS = 1000 = 10125 = NOLIMIT = 50 = 256 = 2147483647 = 1000 = 32768000 = 10000 = 20000 = 25 = 20000 = 2621440 = COPY Figure 8. Display the current settings of BPXPRMxx parameters Lotus Domino for S/390—troubleshooting/hints/tips 39 To display the thread information for the process ID 1: COMMAND INPUT ===> /D OMVS,PID=1 RESPONSE=SC63 BPXO040I 11.45.27 DISPLAY OMVS 784 OMVS 000F ACTIVE OMVS=(7C) USER JOBNAME ASID PID PPID STATE START OMVSKERN BPXOINIT 00FB 1 0 MR 09.42.31 LATCHWAITPID= 0 CMD=BPXPINPR SERVER=Init Process AF= 13 MF=00000 THREAD_ID TCB@ PRI_JOB USERNAME ACC_TIME SC 08B1AF0000000000 008E2A70 OMVS .316 WAT 08B1BAE000000001 008E28D8 .258 VRT 08B1C6C000000002 008E4E88 OMVS .001 KIN 08B1D2A000000003 008E4CF0 7.343 BND 08B5CFE000000004 008E26B8 .125 VRW SCROLL === CT_SECS 8.279 TYPE=FILE STATE W Y K Y Y Figure 9. Display thread information for a process ID 2.1.3.2 The OS/390 SETOMVS system command Use the SETOMVS command to change dynamically the options that OS/390 UNIX System Services currently is using. These options are originally set in the BPXPRMxx parmlib member at the time of initially program loading the system. Figure 8 shows the parameters that can be changed dynamically. 2.1.3.3 The OS/390 SET command In a Lotus Domino environment you may use the SET command to: • Dynamically add modules to, or remove modules from the LPA • SET PROG=xx: The two alphanumeric characters indicating the PROGxx member of the logical parmlib containing definitions that control the addition of modules to, and the removal of modules from the LPA after IPL. • Dynamically change the configuration of OS/390 UNIX System Services system characteristics • SET OMVS=(xx[,xx...,nn]): The two alphanumeric characters that specify one or more parmlib members in BPXPRMxx. If you specify only one member, putting parentheses around the member is optional. If you specify more than one parmlib member, you must put parentheses around the members. 2.1.4 SYSLOG In cases when the server cannot be started or an error occurs during start of the server, it is very often helpful to check the OS/390 system log for error messages or any other hints such as permission problems. These can be authority problems with the access to any file or directory that is shown in detail by a RACF message like the example here: ICH408I USER(DOMINO4 ) GROUP(OEDOMINO) NAME(####################) 576 /u/domino4/domino4.id CL(FSOBJ ) FID(01E2C2D6E7F0F6412804000000130000) INSUFFICIENT AUTHORITY TO OPEN ACCESS INTENT(RW-) ACCESS ALLOWED(OTHER ---) or any kind of authorization problem shown in the next example: 40 Debugging UNIX Applications on OS/390 +WSC/DOMINO1 2A88F4B8: HTPasswd...user"dsynb".pwlen 6, newpwlen 0, failed SAF.Errno:157 Errno2:090c02af,MSG: +WSC/DOMINO1 EDC5157I An internal error has occurred There are many other situations where the log may be a good point to start problem determination. 2.1.5 Dump options/IPCS 2.1.5.1 U034 In case of an abendu034, it is very often necessary to get a slip dump. This topic describes how to set a valid slip trap to catch a dump for the abend. We recommend that you place your slip command into a parmlib member IEASLPxx and enter the command SET SLIP=xx to activate the slip. A dump is written to your system dump data sets. The following slip should be used to capture a dump: Figure 10. Sample IEASLP01 member This slip can then be activated using the command SLIP SET=01 on the system console. After you captured the dump, you can disable this slip using command SLIP MOD,ID=U034,DISABLE. To delete the slip from your system use command SLIP DEL,ID=U034. To check which slips are active the display system command may be used as shown in Figure 11 on page 42. Lotus Domino for S/390—troubleshooting/hints/tips 41 COMMAND INPUT ===> /D SLIP RESPONSE=SC63 IEE735I 12.26.25 SLIP DISPLAY 021 ID STATE ID STATE ID STATE X013 ENABLED X028 ENABLED X052 ENABLED X070 ENABLED X073 ENABLED X0DX ENABLED X13E ENABLED X1C5 ENABLED X222 ENABLED S3C4 ENABLED X422 ENABLED X47B ENABLED X804 ENABLED X806 ENABLED X80A ENABLED X9FB ENABLED XB37 ENABLED XC1A ENABLED XE37 ENABLED XEC6 ENABLED XXC6 ENABLED SCROLL == ID X058 X0E7 X322 X622 X81A XD1A U034 STATE ENABLED ENABLED ENABLED ENABLED ENABLED ENABLED ENABLED ID X066 X0F3 X33E X71A X91A XD37 STATE ENABLED ENABLED ENABLED ENABLED ENABLED ENABLED Figure 11. Display of all active slips on a system 2.1.5.2 Interactive Problem Control System (IPCS) Once you retrieved a dump you may use IPCS to format the dump to get the necessary information out of it. Some information about IPCS commands and what information can be gathered here are described on the following pages. IPCS example Here is an example of how to come closer to a problem source using IPCS: Following error (shown in the Notes Log database log.nsf): Thread=Ý1157627992:1476460551¨ PANIC: Unable to perform control function on semaphore PANIC ENTRY VALUES: decimal errno=111 / hexadecimal errno2=70E0303 CEE3250C The system or user abend U 034 R=070E0303 was issued. From compile unit ./ospanic.c at entry point Panic at compile unit offset +00041C4E at address 1AA1B696. First the messages have to be analyzed where errno=111 and errno2=070E0303 point to an ACCESS/PERMISSION DENIED problem. To find out how to read these messages, see 2.2.2, “Return codes and how to interpret a USS message” on page 49. If a slip dump is available, load it in Interactive Problem Control System (IPCS). To determine how a slip dump is set, see 2.1.5.1, “U034” on page 41. Type IPCS command IP SUMMARY FORMAT. The output of the IP SUMMARY FORMAT command shows several control blocks such as ASCBs, ASXBs, or TCBs. To find further information, type the command such as FIND ’T C B’ to show the TCB SUMMARY. Here you can see TCB (the one related to the Abend Code - what is decimal 34 and hex 22 in this example), Jobname, and ASID. This is shown in the following figure (where the TCB has a value of x’006D78B0’, Jobname is CDOMINS5, and the ASID is x’01EB’): 42 Debugging UNIX Applications on OS/390 IPCS OUTPUT STREAM -----------------------------------------------------------Command ===> * * * * T C B S U M M A R Y * * * * JOB CDOMINS5 ASID 01EB ASCB 00E93700 FWDP 00E52880 BWDP 00F96A00 PAGE 00000006 TCB AT CMP NTC OTC LTC TCB BACK PAGE 006FE240 00000000 00000000 00000000 006FDE88 006FF150 00000000 00000032 006FF150 00000000 00000000 006FE240 00000000 006FDE88 006FE240 00000036 006FDE88 00000000 006FF150 006FE240 006DE9B0 006DE9B0 006FF150 00000039 006DE9B0 00000000 00000000 006FDE88 006DE110 006DE110 006FDE88 00000042 006DE110 00000000 00000000 006DE9B0 006A95E0 006D8B68 006DE9B0 00000046 006D8B68 00000000 00000000 006DE110 00000000 006D88D8 006DE110 00000055 006D88D8 00000000 006D8B68 006DE110 00000000 006D8740 006D8B68 00000058 006D8740 00000000 006D88D8 006DE110 00000000 006D8330 006D88D8 00000061 006D8330 00000000 006D8740 006DE110 00000000 006D8070 006D8740 00000064 006D8070 00000000 006D8330 006DE110 00000000 006D7C68 006D8330 00000066 006D7C68 00000000 006D8070 006DE110 00000000 006D7AD0 006D8070 00000068 006D7AD0 00000000 006D7C68 006DE110 00000000 006D78B0 006D7C68 00000071 006D78B0 84000022 006D7AD0 006DE110 00000000 006D7718 006D7AD0 00000074 006D7718 00000000 006D78B0 006DE110 00000000 006D7580 006D78B0 00000080 006D7580 00000000 006D7718 006DE110 00000000 006D7360 006D7718 00000082 006D7360 00000000 006D7580 006DE110 00000000 006D71C8 006D7580 00000084 006D71C8 00000000 006D7360 006DE110 00000000 006D6E88 006D7360 00000086 006D6E88 00000000 006D71C8 006DE110 00000000 006D6838 006D71C8 00000088 006D6838 00000000 006D6E88 006DE110 00000000 006D65A8 006D6E88 00000090 Now note the TCB and the ASID and use the IPCS command ip omvsdata to get more information. After this command type find ’* PROCESS’ to get the PROCESS SUMMARY REPORT. Here you can find out more information related to the ASID noted before like process ID, parent PID, user ID, and so on. See the following figure (where the process ID is 45000058 - belonging to the ASID found out before): ***** PROCESS SUMMARY REPORT ***** Process Userid Asid Parent Process Session Status ID PID Group ID ID --------------------------------------------------------------------------00000001 ESSTC 0019 00000000 00000001 00000001 01000002 EOSTC 008B 00000001 01000002 01000002 23000003 CDOMT01 0093 68000044 69000057 69000057 53000004 CDOMT01 0056 68000044 69000057 69000057 00000005 ESSTC 002D 00000001 00000005 00000005 . . . . . . 69000057 EDOMCON 02D5 00000001 69000057 69000057 ....... 45000058 CDOMT01 01EB 68000044 69000057 69000057 56000059 CDOMT01 0092 68000044 69000057 69000057 1600005A ESSTC 019F 00000001 1600005A 1600005A - In the PROCESS SUMMARY REPORT you also have the possibility to step the process chain back by checking the PPIDs to come to the first PID in chain finally. The Process ID determined previously is needed for the next step. This is command ip omvsdata detail. After this command type find Process ID (what is Lotus Domino for S/390—troubleshooting/hints/tips 43 "45000058" in our example). Now a lot of details about the failing process are shown. In our example we had an Access denied problem and the Memory Map of the Process shows the files that could have caused this problem (for example, wrong permissions bits set). See the figure below: Process ID: 45000058 Status: Active Last exec() Program Name: /usr/lpp/lotus/notes/latest/os390/http ID Data: Userid: CDOMT01 Parent PID: 68000044 Process Group ID: 69000057 Memory Map Files: Asid: 01EB Ptrace Parent PID: 00000000 Session ID: 69000057 GYMM: 1D372AB0 Origin: 1CAE1000 Length: 0047F000 Offset: 00000000 Type: SHARED Subranges: 1 /usr/lpp/lotus/notes/latest/os390/ltscsc13.tlb GYMM: 1D3729A0 Origin: 1CF60000 Length: 00061000 Offset: 00000000 Type: SHARED Subranges: 1 /usr/lpp/lotus/notes/latest/os390/res/en_US/strings.res GYMM: 1D372890 Origin: 1CFC1000 Length: 00004000 Offset: 00000000 Type: SHARED Subranges: 1 /usr/lpp/lotus/notes/latest/os390/res/en_US/httprs.res Further information using IPCS With the IPCS command ip omvsdata some helpful information about startup options can be found. Typing find Startup after the command ip omvsdata shows the following: IPCS OUTPUT STREAM ---------------------------------------------------Command ===> ip omvsdata Startup options Parmlib member: BPXPRM00 CTRACE parmlib member: CTIBPX00 Maximum processes on system: 44 200 Maximum users on system: 50 Maximum processes per user id: 25 Maximum thread tasks per process: 1,000 Maximum threads per process: 1,000 Maximum allocated files per process: 1,012 Maximum growth for pseudo-terminal sessions: 512 Maximum growth for remote-terminal sessions: 512 Debugging UNIX Applications on OS/390 Another helpful command is ip verbx ledata to show the definite HEAP parameter values in the Language Environment (LE) as shown in the following figure: IPCS OUTPUT STREAM ---------------------------------------------------Command ===> ip ledata PROGRAM INVOCATION OVR ALL31(ON) PROGRAM INVOCATION OVR ANYHEAP(00020000,00016384,ANY ,FREE) INSTALLATION DEFAULT OVR NOAUTOTASK PROGRAM INVOCATION OVR BELOWHEAP(00490000,00004096,FREE) INSTALLATION DEFAULT OVR CBLOPTS(ON) INSTALLATION DEFAULT OVR CBLPSHPOP(ON) INSTALLATION DEFAULT OVR CBLQDA(OFF) INSTALLATION DEFAULT OVR CHECK(OFF) INSTALLATION DEFAULT OVR COUNTRY(US) INSTALLATION DEFAULT OVR NODEBUG INSTALLATION DEFAULT OVR DEPTHCONDLMT(00000000) INSTALLATION DEFAULT OVR ENVAR("") INSTALLATION DEFAULT OVR ERRCOUNT(00000000) INSTALLATION DEFAULT OVR ERRUNIT(00000006) INSTALLATION DEFAULT OVR FILEHIST DEFAULT SETTING OVR NOFLOW PROGRAM INVOCATION OVR HEAP(01984384,00032768,ANY , KEEP,00016384,00004096) INSTALLATION DEFAULT OVR HEAPCHK(OFF,00000001,00000000) INSTALLATION DEFAULT OVR HEAPPOOLS(OFF, 00000008,00000010, 00000032,00000010, 00000128,00000010, 2.1.6 CEEDumps In case of abending situations in the Lotus Domino server (for example, panics or ABENDU034) often CEEDumps are written. These can be found in the .../notesdata directory and are required for problem determination by support personnel. How to debug CEEDumps is described in Chapter 8, “Language Environment for OS/390” on page 275. 2.2 UNIX System Services This section describes some main debugging issues for the Lotus Domino S390 server in the UNIX System Services environment. 2.2.1 nsd.sh This section describes the nsd.sh shell script, how to use it and what can be found in the output. 2.2.1.1 What is the nsd.sh shell script The nsd.sh shell script is used to gather information about your Domino Server. It was originally designed to be run with various UNIX systems and has been enhanced for use with UNIX System Services on the OS/390 platform. Today NSD collects the following data: • Environment variables Lotus Domino for S/390—troubleshooting/hints/tips 45 • Job call stack • Job locks • Display open files • IPC statistics • Shared memory • Contents of the notes.ini file • Process list • Listing of the Domino directory and its subdirectories • System information like host name and number of file descriptors • General information about the script itself (version) • TCP/IP information based on /etc/resolv.conf 2.2.1.2 Where can you find NSD on your system NSD is located in the /usr/lpp/lotus/bin/tools/diag directory. The output of the script can be found by default in your notes data directory. You can set the environment variable NSD_LOGDIR to redirect the output to any other directory where you want it to be automatically saved. Make sure the user issuing this command has write access to this directory. The output is saved in a log file with the following structure: <nsd_option>_<OS name>_<hostname>_<timestamp>.log Here are examples for nsd.sh -kill and nsd.sh -info files: kill_OS390_SC63_07_14@14_46.log sysinfo_OS390_SC63_07_14@15_19.log 2.2.1.3 How to run nsd.sh The command nsd.sh should be run through UNIX System Services from the notes data directory. You may add the complete path to the PATH environment variable in the file .profile located in your home directory or issue the command as shown in Figure 12. HAUFF @ SC63:/domino4/notesdata>/usr/lpp/lotus/bin/tools/diag/nsd.sh INFO: Using cache file /tmp/nsd.AK/nsd_3.2.7_cache.ins Script Version : /usr/lpp/lotus/bin/tools/diag/nsd.sh 3.2.7 Notes Version : Release 5.0a (Intl) 14 June 1999 Notes Base : 5.0 Data Dir : /domino4/notesdata Notes Exec Dir : /usr/lpp/lotus/notes/latest/os390 Search Path : /usr/lpp/lotus/notes/latest/os390 /usr/lpp/lotus/notesapi Debugger : /bin/dbx Debugger Version: Compiled: Feb 23 1999 11:09:56 GMT as BFP Script Dir : /usr/lpp/lotus/bin/tools/diag Host Info : OS/390 SC63 07.00 02 9672 User : AK (AK) Date : Wed Jul 14 13:55:13 EDT 1999 Clearcase View : ins Input arguments : Figure 12. Partial output of nsd.sh 46 Debugging UNIX Applications on OS/390 2.2.1.4 Parameters of the nsd.sh script There are several parameters available for nsd.sh. To get a complete and actual list of them run /usr/lpp/lotus/bin/tools/diag/nsd.sh -help for all available options as shown in Figure 13. The /usr/lpp/lotus/bin/tools/diag/nsd.sh -info command gives you most of the information needed to get a quick overview of your environment: DOMINO4 @ SC63:/domino4/notesdata>/usr/lpp/lotus/bin/tools/diag/nsd.sh -help Usage: /usr/lpp/lotus/bin/tools/diag/nsd.sh [options] [ core_file | pid ] Options: -batch -info -noinfo -nolog -ver*sion -ps -kill -memcheck -nomemcheck -lsof -nolsof -user <user_id> -exec_path <dir[:dir]*> -filter <log_file> -help -help <option> -help gen*eral -help lim*itations -help update (run in batch mode -- don't write to tty) (just report system info) (don't report system info) (don't log output to log file) (just show version header) (show process tree) (kill all/user notes processes and cleanup IPCs) (run the Notes memory checker only) (don't run the Notes memory checker by default) (run lsof only -- list Notes open files) (don't run lsof by default) (operate only on notes process run by 'user_id') (add additional directories to the search path) (filter stack output of log_file) (show this help list) (where option is any one of the above) (general info about the script and how it works) (general info on script limitations) (list script version update info) Figure 13. List of all available parameters for the nsd.sh script Note There have been cases where nsd.sh did not work due to a DBX issue, which requires a fix. DBX fixes can be downloaded from the Internet home page: http://www.s390.ibm.com/oe 2.2.1.5 Terminating the server using option nsd -kill Domino R5 no longer provides the killnotes script to terminate the server. It has been replaced by the -kill option of the nsd.sh. To run this you must be logged on with the user ID of the domino server you want to terminate. Invoke the command as shown in Figure 14. Ensure that you are in the notes data directory. Lotus Domino for S/390—troubleshooting/hints/tips 47 DOMINO4 @ SC63:/u/domino4>cd /domino4/notesdata DOMINO4 @ SC63:/domino4/notesdata>/usr/lpp/lotus/bin/tools/diag/nsd.sh -kill INFO: Using cache file /tmp/nsd.DOMINO4/nsd_3.2.7_cache.ins Script Version : /usr/lpp/lotus/bin/tools/diag/nsd.sh 3.2.7 Notes Version : Notes Base : UNKNOWN Data Dir : /domino4/notesdata Notes Exec Dir : /usr/lpp/lotus/notes/latest/os390 Search Path : /usr/lpp/lotus/notes/latest/os390 /usr/lpp/lotus/notesapi Debugger : /bin/dbx Debugger Version: Compiled: Feb 23 1999 11:09:56 GMT as BFP Script Dir : /usr/lpp/lotus/bin/tools/diag Host Info : OS/390 SC63 07.00 02 9672 User : DOMINO4 (DOMINO4) Date : Wed Jul 14 14:08:11 EDT 1999 Clearcase View : ins Input arguments : INFO: Killing /usr/lpp/lotus/notes/5001/os390/http 285212688 INFO: Killing /usr/lpp/lotus/notes/5001/os390/replica 872415250 INFO: Killing /usr/lpp/lotus/notes/5001/os390/stats 1207959572 INFO: Killing /usr/lpp/lotus/notes/5001/os390/update 251658262 INFO: Killing /usr/lpp/lotus/notes/5001/os390/adminp 771751961 INFO: Killing /usr/lpp/lotus/notes/5001/os390/sched 268435484 INFO: Killing /usr/lpp/lotus/notes/5001/os390/amgr 553648157 INFO: Killing /usr/lpp/lotus/notes/5001/os390/amgr 234881063 INFO: Killing /usr/lpp/lotus/notes/5001/os390/server 1744830494 INFO: Killing /usr/lpp/lotus/notes/5001/os390/event 318767142 INFO: Killing /usr/lpp/lotus/notes/5001/os390/calconn 838860840 INFO: Killing /usr/lpp/lotus/notes/5001/os390/smtp 134217775 INFO: Removing Share Mem IPC keys 0xf83a8000 0xf83a8002 0xf83a8003 0xf83a8001 INFO: Removing Semaphore IPC keys 0xf83a8005 0xf83a8000 0xf83a8006 0xf83a8001 Remaining IPC Keys (Notes IPC keys start with 0xf8) Message Queues: Shared Memory: T ID KEY m 957508 0xf83a8000 m 760901 0xf83a8002 m 957510 0xf83a8003 m 564295 0x010d0144 m 957512 0xf83a8001 MODE --rw-rw-----rw-rw-----rw-rw-----rw-rw-rw--rw-rw---- OWNER DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 GROUP OEDOMINO OEDOMINO OEDOMINO OEDOMINO OEDOMINO Semaphores: T ID KEY MODE OWNER GROUP s 1068581 0x020d0145 --ra-ra-ra- DOMINO4 OEDOMINO s 1068582 0x030d0145 --ra-ra-ra- DOMINO4 OEDOMINO s 1003051 0x010d0145 --ra-ra-ra- DOMINO4 OEDOMINO Note: You can set the environment variable NSD_LOGDIR to point to the directory where you want your logs/cores to be automatically saved Run /usr/lpp/lotus/bin/tools/diag/nsd.sh -help for more info on new options/ features Figure 14. Terminating the server with option nsd.sh -kill 48 Debugging UNIX Applications on OS/390 2.2.2 Return codes and how to interpret a USS message How can a Lotus Domino message be interpreted? The following example shows such a message coming up in the notes log (log.nsf): PANIC: fatal_error signal handler PANIC ENTRY VALUES: decimal errno=116 / hexadecimal errno2=57C006C Figure 15. Error message 2.2.2.1 Explanations of errno • errno=116: This errno is a decimal USS return code and can be found in OS/390 UNIX System Services Messages and Codes, SC28-1908. The codes described there are represented in decimal and hex values. So look for "116" decimal) or "0074" (hex) in the manual and you will find: Table 11. |USS errno Decimal value Hex value Return Code Description 116 0074 EDEADLK A resource deadlock is avoided The USS message manual also contains the list shown in Table 12. Table 12. List of Return Codes Decimal value Hex value Return Code Description 1 0001 EDOM Error in the domain 2 0002 ERANGE Result is too large 111 006F EACCES Permission is denied 112 0070 EAGAIN The resource is temporarily unavailable 113 0071 EBADF The file descriptor is incorrect 114 0072 EBUSY The resource is busy 115 0073 ECHILD No child process exists 116 0074 EDEADLK A resource deadlock is avoided ...... ....... ....... ................................... 1155 0483 ETcpBadObj Streams push object error 1156 0484 ETcpClosed Streams closed error 1157 0485 ETcpLinked Streams link error 1158 0486 ETcpErr TCP error 1159 0487 EINTRNODATA Accept_and_receive is interrupted after the connection arrived but before the first data arrived 1160 0488 ENOREUSE Socket descriptor reuse is not supported Lotus Domino for S/390—troubleshooting/hints/tips 49 2.2.2.2 Explanations of errno2 • errno2() =57C006C: This errno2 is divided into two parts: Table 13. USS errno2 cccc rrrr 057C 006C where • cccc is a halfword reason code qualifier • rrrr is the halfword reason code described in the message manual The two high-order bytes of the reason codes returned by OS/390 UNIX contain a value that is used to qualify the contents of the two low-order bytes. If the contents of the two high-order bytes are within the range of X’0000’ to X'20FF', the error represented by the reason code is defined by OS/390 UNIX. If the contents of the two high-order bytes is outside the range, the error represented by the reason code is not an OS/390 UNIX reason code. Because the hexadecimal value "057C" (halfword reason code qualifier) is within the range of X’0000’ to X'20FF' in the preceding example, code "006C" is an OS/390 UNIX reason code. Looking for "006C" in OS/390 UNIX System Services Messages and Codes, SC28-1908, results in: Table 14. Reason Code example 006D 006D JRFileNotThere The requested file does not exist. Action: The service cannot be performed unless the named file exists. Table 15 shows a partial list of reason codes. For a complete list, refer to the USS messages manual. Table 15. List of Reason Codes Reason Code Decimal Hex JRAccept 531 0213 JRAccess 331 014B ........... ...... ....... JRWriteUserStorageFailed 448 01C0 29188 7204 317 013D JRWrongKey 1125 0465 JRWrongPID 557 022D JRZeroOrNegative 846 034E JRWrongBand JRWrongInstance 50 Debugging UNIX Applications on OS/390 2.2.3 Useful UNIX commands To navigate in the UNIX System Services environment, it is very helpful to have a short reference for the most common UNIX commands. The following list covers most of them in an alphabetical order: Table 16. Useful UNIX commands Command Short description Example cd Changes the current directory. cd /usr/lpp/lotus chmod Changes the access permissions or modes of the specified file or directory. Modes are read(r), write(w), and execute(x). chmod -w /usr/lpp/test chown Changes the owner or group of a file or directory. chown 755 /etc/profile cp Copies files to a target named by the last argument. cp file1 file2 df Displays the amount of free space in a file system df -Pk and the total amount available. The -Pk options list complete information on the space used, in the following order: File system name Total space Space used Space free Percentage of space used File system root echo Writes argument to standard output. echo $PS1 env Displays or sets the environment variables. env export Format: export name=value export PATH=/usr/lpp:/notesda ta:$PATH Marks each variable name so that the current shell makes it automatically available to the environment of all commands run from that shell. find Find searches a given file hierarchy specified by path, finding files that match the criteria given by expression. find . -name test.c kill Ends a process by sending a signal. kill 715 (715 is a processid ) ls Lists files and directories. The -l option displays ls -l permissions, links, owner, group, size, time, and name. mkdir Creates a new directory. mkdir /usr/lpp/lotus/test mv Rename or move a file or directory. mv test1 test2 ps Displays a list of currently running processes. ps -ef pwd Displays the fully qualified pathname of the current working directory. pwd rm Removes a file or directory. rm -r /usr/lpp/lotus/test Lotus Domino for S/390—troubleshooting/hints/tips 51 Command Short description Example su Switches to superuser or another ID. su uid / use exit to switch back For a complete list of all available commands and parameters, please refer to OS/390 UNIX System Services User's Guide, SC28-1891. Here are output examples of the commands: df command HAUFF @ SC63:/u/hauff>df -P /usr/lpp/lotus Filesystem 512-blocks Used Available Capacity Mounted on OMVS.DOMINO5.PROD.HFS 784800 695968 88832 89% /usr/lpp/lotus Figure 16. Sample output of the UNIX command df -P env command DOMINO4 @ SC63:/u/domino4>env Mail=/usr/mail/DOMINO4 HOSTNAME=SC63 PATH=/bin:.:/usr/lpp/java/J1.1/lib/mvs/native_threads:/usr/lpp/lotus/bin:/usr/lp p/lotus/bin/tools: SHELL=/bin/sh _WORK_UNIT=SYSDA _INCDIRS=/usr/include /usr/lpp/ioclib/include Notes_Directory=/domino4/notesdata _PLIB_PREFIX=CEE PS1=$LOGNAME @ $HOSTNAME:$PWD> _CEE_RUNOPTS=AL(ON) ENVAR(_BPXK_SETIBMOPT_TRANSPORT=TCPIPMVS) POS(ON) _=/bin/env CLASSPATH=:/usr/jpp/Java/J1.1/lib/classes.zip LOGNAME=DOMINO4 STEPLIB=none LANG=C LIBPATH=/lib:/usr/lib:.:/usr/lpp/Java/J1.1/lib/mvs/native_threads _SLIB_PREFIX=SYS1 TERM=vt100 _CLIB_PREFIX=CBC _BPX_SHAREAS=YES HOME=/u/domino4 TZ=EST5EDT MANPATH=/usr/man/%L NLSPATH=/usr/lib/nls/msg/%L/%N Notes_SHARED_DPOOLSIZE=8388608 Figure 17. Sample output of UNIX command env 52 Debugging UNIX Applications on OS/390 ps command HAUFF @ SC63:/u/hauff>ps -a PID TTY TIME CMD 268435467 ttyp0002 0:43 /bin/find 117440529 ttyp0001 0:01 /bin/sh 100663327 ttyp0001 3h05 /usr/lpp/lotus/notes/latest/os390/cconsole 234881059 ttyp0002 0:43 /bin/sh 38 ttyp0003 0:02 /bin/sh 50331687 ttyp0003 2h14 /usr/lpp/lotus/notes/latest/os390/cconsole 671088680 ttyp0002 0:43 /bin/ps Figure 18. Sample output of the UNIX command ps 2.3 Lotus Domino This section describes main debugging issues for the Lotus Domino S/390 server in its own environment. 2.3.1 Startup script and Language Environment (LE) run-time options The incorrect use of LE run-time variable values can cause some serious problems for Lotus Domino in an S/390 environment. This issue is described in Information APAR II11603 as follows: ERROR DESCRIPTION: Various Symptoms, server abends with 0C1, (ABEND0C1) during server setup/upgrade. Domino running with the SMTP MTA hangs during shutdown, (Server in a loop) causing a hang type symptom. Other symptoms include running out of storage below the line, or server Panic during start up. It's possible that the customer has had Domino running on another of this S390 systems but is failing on "this" one. Solution: The Language Environment, LE, provides the runtime environment for the Domino executables. There is parmlib member CEEDOPT which is used to specify system wide defaults for the many runtime parameters. Some customer sites have altered these defaults as required by other work for their systems, COBOL programs for instance. These parameters can be reset to IBM defaults or these parameters may be set locally for Domino executables. This is accomplished through the use of a UNIX style environment string variable, called _CEE_RUNOPTS. In order to set this variable properly it is necessary to edit either the startup script or the ose90setup script, depending on the failure that is occurring. If the failure is during setup then /usr/lpp/lotus/bin/server/tools/os390setup is the script that should be modified. Remember to save a copy before editing! Add the line: export _CEE_RUNOPTS="STORAGE(,,NONE,1K)" If the failure is occurs during startup or shutdown the script to edit is /usr/lpp/lotus/bin/server/tools/startup. Remember to save a copy before editing! The server executables are hidden behind links through this script which sets up (most of) the Lotus Domino for S/390—troubleshooting/hints/tips 53 environment. Find the section for os390 and edit the LE runoption specification to the following: _CEE_RUNOPTS="RPTSTG(OFF) \ ALL31(ON) \ STACK(140000,140000,ANY,KEEP) \ LIBS(9K,9K,FREE) \ STORAGE(NONE,NONE,NONE,1K) \ HEAP(19843484,32K,ANYWHERE,KEEP,8K,4K) \ BELOWHEAP(490000,4096,FREE) \ ANYHEAP(20000,8K,ANYWHERE,FREE) NONONIPTSTACK(4K,4K,BELOW,KEEP) THREADHEAP(4K,4K,ANY,KEEP) \ TRAP(ON)" export _CEE_RUNOPTS For 'readability, backslash characters have been added after a space and before the newline (carriage return). Other than spaces (or commas) to separate the suboptions, this is the only character allowed within the environment string _CEE_RUNOPTS. The purpose of these scripts is environment is available to the This section of the script sets runtime options for the process to insure that the proper process which is being invoked. the LE (Language Environment) correct. For QMR's 4.63 and 4.56, this portion of the startup script has already been updated. Previous releases have seen failures as a result of unusual default system wide runtime parameters adversely affecting the Domino server, the options specified here have given good results. Please also refer to Lotus Domino TechNote number #168426 (this technote contains nearly identical informations). 2.3.2 How to activate the Java environment Especially with Lotus Domino 4.6.x there were error messages during the startup of the server when the Java environment should be activated. 2.3.2.1 Lotus Domino Server 4.6.x JVM: The JVM runtime library could not be found. JVM: Java Virtual Machine failed to start. Figure 19. Java error messages Solution: To avoid these error messages, two environment variable settings are required: • PATH must include the location of libjava.a. • CLASSPATH must include the location of the classes.zip file. Note libjava.a and classes.zip file are part of Java Development kit 54 Debugging UNIX Applications on OS/390 The following are examples of setting PATH and CLASSPATH: Example export Path=$PATH:/usr/lpp/java/J1.1.1/lib/mvs/native_threads export CLASSPATH=$CLASSPATH:/usr/lpp/java/J1.1.1/lib/classes.zip 2.3.2.2 Lotus Domino Server 5.0 The following is mentioned in the Domino S/390 5.0 Release Notes (database readmes.nsf on the installation CD) for enabling Java: This topic describes setting up the agent manager configuration for running Java agents. It includes: • Java Virtual Machine initialization • Setting the environmental variables • Defining the platform property Java Virtual Machine initialization Domino for S/390 Release 5.0 supports the creation of agents using the Java programming language. See Java Programmer's Guide for more information. Install the Java Development Kit (JDK) 1.1.6 or higher separately. If the agent manager does not initialize properly, the following message is displayed: JVM: The Java runtime library could not be found If you run a Java agent without successful JVM initialization, the following error message is displayed: JVM: Java Virtual Machine failed to start This message cannot be ignored and you must perform the Java initialization again. Setting the environmental variables Set the three environmental variables as follows: • PATH must include the location of libjava.a and the Java executable. • LIBPATH must include the location of libjitc.so (usually in the same directory as libjava.a). • CLASSPATH must include the location of the classes.zip file. Notes • The libjava.a and classes.zip files are part of the JDK. • The LIBPATH environment variable points to a version of the JDK and must be kept in agreement with the PATH and CLASSPATH settings for the agent manager setup. Each environment variable must point to the same level of the JDK. Lotus Domino for S/390—troubleshooting/hints/tips 55 Settings: The following are examples of setting the required environmental variables. Replace the directory names shown here with the names you are currently using. Examples export PATH=$PATH:/usr/lpp/java/J1.1.6/lib/mvs/native_threads:/usr/lpp/java/ J1.1.6/bin export LIBPATH=$LIBPATH:/usr/lpp/java/J1.1.6/lib/mvs/native_threads export CLASSPATH=$CLASSPATH:/usr/lpp/java/J1.1.6/lib/classes.zip Defining the platform property Use UNIX as the platform property to support the creation of agents using the Java programming language on the S/390 platform. Important Be careful, Java will crash the server if it is not run from a specific directory. 2.3.3 Common parameters in the notes.ini This section describes some of the main notes.ini parameters: Table 17. Common notes.ini parameters Variable Short description of the variable Example Admin The user name of the server administrator. Enter each part of the name in canonical format, separated by a slash(/), where: CN is the common name, OU is the organization unit, O is the organization, C is the country code. Admin=CN=Manfred Hauff/O=ITSO2 CompanyName Your company name as entered during server setup. CompanyName=IBM Directory The notes data directory. Directory=/domino4/notesdata Domain The server’s domain name entered during setup. Domain=ITSO2 DST Specifies that a server observes daylight saving time. DST=1 Observe daylight saving time KeyFilename Specifies the location of the server ID file. KeyFilename=/u/domino4/domino4.id KitType Indication if this notes.ini belongs to a client or server. KitType=1 (client) , KitType=2 (server) 56 Debugging UNIX Applications on OS/390 Variable Short description of the variable Example Log Specifies the contents of the log file and controls other logging actions. Syntax: log=logfilename,log_option,not_used,days,size Log=log.nsf,1,0,7,40000 (default) MailServer Specifies the server where the user's mail file resides. MailServer=CN=Domino4/O=ITSO2 Names Specifies the names of the secondary Domino Directories the server searches to verify recipient names. By default only the primary Domino Directory NAMES.NSF is searched. Names=names,westnames,eastnames <TCPPortname>_ TCPIPAddress Defines the IP address and port number for a Domino server. <TCPportname> is the name of the TCP port specified on the Ports statement in the notes.ini. TCPIP_TcpIpAddress=0,9.12.2.35:1352 Ports Specifies the port, which is enabled for the server. Ports=TCPIP ServerTasks The servertasks being loaded during server startup. Servertasks=Router, Replica,Update ServerTasksAt1 This line schedules when this task will be run. Number represents the time (1:00 A.M.). ServertasksAt1=Catalog,Design Timezone Specifies the time zone for a server. Time zones begin at Greenwich, England (0 = Greenwich Mean Time) and move westward around the world. Timezone=5 Translog_Status Enable/disable transaction logging for all R5.0 databases on the server. "0" is disabled, "1" is enabled. Important: You must upgrade databases to Domino 5.0 format before they can use transaction logging. Translog_Status=1 Lotus Domino for S/390—troubleshooting/hints/tips 57 2.3.4 Logs There are multiple logs that are written by Lotus Domino S/390, either permanently or especially in case of errors. The most important logs are described in the following sections. 2.3.4.1 NSD logs The NSD output is saved in a log file with the following structure: <nsd_option>_<OS name>_<hostname>_<timestamp>.log Here are some examples for nsd.sh -kill and nsd.sh -info files: kill_OS390_SC63_07_14@14_46.log sysinfo_OS390_SC63_07_14@15_19.log For more information, see 2.2.1, “nsd.sh” on page 45. 2.3.4.2 HTTP logs These logs are written for the HTTP task. Enabling HTTP logs To get HTTP logs, this has to be enabled in the Server Configuration first as shown in Figure 20. Figure 20. Enable http logs 58 Debugging UNIX Applications on OS/390 DOMLOG One of the Domino logs is the database domlog.nsf that contains the following information: Figure 21. domlog.nsf Access log The access log is usually written to the .../notesdata directory and readable using the Browse command in the ISHell. Format: accessdate.log Example: access07151999.log Contents (small excerpt): BROWSE -- /domino4/notesdata/access07151999.log ---- Line 00000000 Col 001 080 Command ===> Scroll ===> PAGE 9.12.2.163 9.12.2.35 CN=Wilhelm Michel/O=Itso2 Ý15/Jul/1999:16:20:35 +0500¨ "GETT /catalog.nsf/9801faacd5f39e9b852566640055b0aa?OpenView HTTP/1.0" 200 10630 9.12.2.163 9.12.2.35 - Ý15/Jul/1999:16:20:55 +0500¨ "GET /?Open HTTP/1.0" 401 2601 263 Agent log The agent log is usually written to the .../notesdata directory and readable using the Browse command in the ISHell. Format: agentdate.log Example: agent07151999.log Contents (small excerpt): Lotus Domino for S/390—troubleshooting/hints/tips 59 BROWSE -- /domino4/notesdata/agent07151999.log ----- Line 00000000 Col 001 058 Command ===> Scroll ===> PAGE ********************************* Top of Data ********************************** Ý15/Jul/1999:16:20:35 +0500¨ "Mozilla/4.6 Ýen¨ (WinNT; I)" Ý15/Jul/1999:16:20:35 +0500¨ "Mozilla/4.6 Ýen¨ (WinNT; I)" Ý15/Jul/1999:16:20:55 +0500¨ "Mozilla/4.6 Ýen¨ (WinNT; I)" Cgi-error log The cgi-error log is usually written to the .../notesdata directory and readable using the Browse command in the ISHell. Format: cgi-errordate.log Example: cgi-error07151999.log Error log The error log is usually written to the .../notesdata directory and readable using the Browse command in the ISHell. Format: errordate.log Example: error07151999.log Contents (small excerpt): BROWSE -- /domino4/notesdata/error07151999.log ----- Line 00000000 Col 001 076 Command ===> Scroll ===> PAGE ********************************* Top of Data ********************************** Ý15/Jul/1999:16:20:24 +0500¨ Ý?¨ Ýhost: ¨ Can't init groups for user DOMINO4 ******************************** Bottom of Data ******************************** Referer log The error log is usually written to the .../notesdata directory and readable using the Browse command in the IShell. Format: refererdate.log Example: referer07151999.log Contents (small excerpt): BROWSE -- /domino4/notesdata/referer07151999.log --- Line 00000000 Col 001 080 Command ===> Scroll ===> PAGE ********************************* Top of Data ********************************** Ý15/Jul/1999:16:21:05 +0500¨ "http://9.12.2.35:8080/?Open" Ý15/Jul/1999:16:21:05 +0500¨ "http://9.12.2.35:8080/catalog.nsf?OpenDatabase" Ý15/Jul/1999:16:21:15 +0500¨ "http://9.12.2.35:8080/catalog.nsf/9801faacd5f39e9b 0¨ "http://9.12.2.35:8080/catalog.nsf/9801faacd5f39e9b852566640055b0aa?OpenView" 60 Debugging UNIX Applications on OS/390 2.3.4.3 Noteslog Every Domino server has a log file (LOG.NSF) that reports all server activity and provides detailed information about databases and users on the server. The log file is created automatically when you start a server for the first time. You can do the following: • Record additional information in the log file. • View the log. • Search the log. • Control the size of the log. For more information about the log.nsf, see database Domino 5 Administration Help (help5_admin.nsf). 2.3.4.4 Console log Every line prompted on the console can be rerouted to a so-named debug file using the Debug_Outfile parameter in the notes.ini. For information on how to activate this file, see 2.5.8.1, “Implementing the DEBUG_OUTFILE parameter” on page 115. 2.3.5 The Domino console In this section possibilities with the Lotus Domino console are covered. 2.3.5.1 Invoking the console multiple times - cconsole Using the Domino Character Console to access the server console The Domino Character Console (the cconsole program) provides a way to access the server console from the command line. This feature is supported only for UNIX platforms. You can invoke the cconsole program multiple times. You can also run the cconsole program when there is already an operational Domino server console; however, the cconsole input and output may also reflect commands launched from other console processes. Note The cconsole program is installed into your Notes bin directory. To start the cconsole program 1. To use cconsole, you must be listed as an administrator in the name and address book server document. 2. Change the active directory to your data directory. For example, enter: c d ~/notesdata 3. Enter the cconsole command. For example, enter: /opt/lotus/bin/cconsole 4. Enter the path and file name of your Notes user ID. 5. Enter the password for your Notes user ID. 6. To exit cconsole, type: done Lotus Domino for S/390—troubleshooting/hints/tips 61 Remote cconsole The cconsole program does not start if the Domino server is not running on the same machine as the cconsole program. If the server fails while cconsole is running, cconsole may not automatically shut down. In this case, enter the done command to exit the cconsole program. To run cconsole from a remote machine, first telnet to the machine running the Domino server. Note There is a security risk when running the cconsole program from a remote machine or from a remote X display. The cconsole program warns you of this security risk before proceeding. Deploy a secure remote protocol such as encrypted telnet. To address this security risk, if you do not deploy a secure remote protocol, run the cconsole program only from the local Domino server machine. Additional cconsole commands In addition to the current set of Domino server console commands, cconsole also supports these commands: Table 18. cconsole commands Command Result done Exits cconsole while the Domino server continues to run. live on Enables cconsole as a live console so that you see messages sent to the server console from other sources. live off Disables the live console so that you see only the commands entered and the responses to these commands. Command line switches There are several command line switches that streamline using cconsole. You type the switches when you start cconsole: Table 19. Command line switches Switch Result -f Lets you enter the path and file name for the Notes user ID when you start cconsole so that you are not required to respond to the prompts. -i Lets you ignore warnings; warnings continue to appear on the console, but you will not be required to respond to them. -l Lets you automatically start that console live when you start cconsole. For example, if you do not want to wait for the prompt to enter the path and file name for the Notes user ID, enter this command: /opt/lotus/bin/cconsole -f domino4/notesdata/UserID.id 62 Debugging UNIX Applications on OS/390 Figure 22. cconsole 2.3.5.2 Domino server/console commands List of all available server commands This list briefly describes the server commands. These commands are typed in at the server console: BROADCAST "msg" ["user"] Broadcast a message to user(s) of this server DBCACHE Database Cache management commands DISABLE Disable use of database cache FLUSH Clear out database cache SHOW Show contents of database cache DROP ["username"] [ALL] Drop one or more sessions EXIT [password] Exit server HELP Help (Displays this help information) LOAD pgmname Load program PULL servername Replicate one-way (pull) PUSH servername Replicate one-way (push) QUIT [password] Quit (exit server) REPLICATE servername Replicate two-way request RESTART Restart information: SERVER [password] Restart Server PORT portname Disable/Enable transactions on port ROUTE servername Route mail to server SET Set server option: CONFIGURATION "variable=value" Configuration variable SECURE [current-password] [new-password] Secure Console Password STAT [Facility] [Statname] Reset statistics SHOW Show server information: ALLPORTS Show configuration for all ports CLUSTER Cluster information CONFIGURATION variable Configuration variable Lotus Domino for S/390—troubleshooting/hints/tips 63 DATABASE filename Show Database Information DBS Show Open Database Information DIRECTORY Directory Information DISKSPACE filesystem Available disk space MEMORY Memory information PORT portname Port specific information SCHEDULE Next Schedule [Server/Program/Location] [Appl] SERVER Server information STATISTIC variable Statistic variable TASKS Server tasks USERS Users with open sessions START Starts the specified service PORT portname Enable transactions on port STOP Stops the specified service PORT portname Disable transactions on port TELL taskname command-string Send command-string to a task Note The following pages show the syntax, description, and examples of most of the Domino server commands when typed on the server console. Be aware that all these issues can also be handled using the Domino Administration function on a Workstation Client. How to handle all these commands is also described in detail in the Domino 5 Administration Help Guide (help5_admin.nsf), Chapter "Domino server commands". Broadcast Syntax: Broadcast message usernames Description: Sends a message to specified users or to all users of this server. Use this command to warn users when a server is brought down for maintenance. The message you enter appears in the user's status bar. Example: > broadcast "this is a test note" "Wilhelm Michel" Dbcache Syntax: dbcache show/flush/disable Description: 64 • DISABLE Disable use of database cache • FLUSH Clear out database cache • SHOW Show contents of database cache Debugging UNIX Applications on OS/390 Example: > dbcache show Database /domino4/notesdata/admin4.nsf > dbcache flush > dbcache show Database > Command Result Command Result Drop Syntax: Drop username Description: Closes one or more server sessions. To visually confirm which sessions are dropped, you must enter the Log_Sessions=1 setting in the server's NOTES.INI file. Examples: > Drop "Sandy" > Drop "Lee" "Fran" > Drop All -- Closes the current session running under the user name Sandy Closes the sessions running under the user names Lee and Fran Closes all server sessions Exit Syntax: Exit Description: Stops the server. This command is identical to Quit . Help Syntax: Help Description: Displays a list of server commands with a brief description, arguments (if any), and the proper syntax for each (see “List of all available server commands” on page 63). Load Syntax: Load programname Description: Loads and starts a specified server task or program on the server. You can start a server add-in program or one that takes a command line for additional data, such as a backup program. The program you run must be on the server's search path. Use the Load command to run a program until it completes or, if the program runs continually, until you stop the server. Where applicable, you can include arguments that determine how the program runs. Example: > load Fixup Loads and runs the Fixup server task Lotus Domino for S/390—troubleshooting/hints/tips 65 Pull Syntax: Pull servername [databasename] Description: Forces a one-way replication from the specified server to your server. You can also replicate a single database from the specified server to your server by including the database name on the command line. The initiating server receives data from the named server but does not request that the other server pull data from it. This forces a server to replicate immediately with the initiating server, overriding any replication scheduled in the Domino Directory. Enter the server's full hierarchical name, if applicable. You can pull changes immediately if an important database, such as the Domino Directory, has changed or if a database on your server is corrupted or has been deleted. For replication to succeed, make sure that: • The Domino Directory contains a Server document for each server in the domain. • The Domino Directory contains a Connection document to connect to a remote server. • Each server's ID file contains a certificate that the other server recognizes and trusts. • Database ACLs allow replication, and the source server has sufficient access in the ACLs to replicate changes. If you are using server access lists, servers must have prop er access in the Server document. If the server is currently replicating, Domino queues the Pull server command until the current task completes. To check the status of the Replicator before using Pull, enter this command at the console: Show Tasks The server displays one of the following messages: • If the server is not replicating, the word Idle appears next to the Replicator task. • If the server is replicating, a message such as Replicating CONTRACT.NSF from MARKETING\CONTRACT.NSF appears. Example: > pull domino5\ITSO2 > pull domino5\ITSO2 NAMES.NSF 66 Debugging UNIX Applications on OS/390 Forces one-way replication with the server domino5. Forces one-way replication of the NAMES.NSF file from server domino5. Push Syntax: push servername [databasename] Description: Forces a one-way replication from your server to the specified server. You can also replicate a single database from your server to the specified server by including the database name on the command line. The initiating server sends data to the named server but does not request data in return. This forces a server to replicate immediately with the initiating server, overriding any replication scheduled in the Domino Directory. Specify the server's full hierarchical name, if applicable. In effect, the Push server command is the functional opposite of the Pull server command. Example: > push domino5\ITSO2 > push domino5\ITSO2 NAMES.NSF Forces one-way replication with the server domino5. Forces one-way replication of the NAMES.NSF file to server domino5. Quit Syntax: Quit Description: Stops the server. This command is identical to the Exit server command. However, the Quit server command differs from the Tell server command, which you use to stop a particular server task without stopping the server. If you stop a server while it is replicating databases or routing mail, these tasks resume at the next scheduled interval after you restart the server. Replication or mail routing continues until the databases are fully replicated and until the complete mail message is transferred or returned to the sender. Before you use the Quit server command to stop the server, use the Broadcast server command to warn users to finish their current tasks before you stop the server. Replicate Syntax: Replicate servername [databasename] Description: Forces replication between two servers (the server where you enter this command and the server you specify). Use the server's full hierarchical name. If the server name is more than one word, enclose the entire name in quotes. To force replication of a particular database that the servers have in common, specify the database name after the server name. The initiating server (where you are currently working) first pulls changes from the other server, and then gives the other server the opportunity to pull changes from it. You can use this command to distribute changes quickly or to troubleshoot a replication or communication problem. Lotus Domino for S/390—troubleshooting/hints/tips 67 If the server is already replicating when you issue the command, Domino queues the command until the current replication ends. To check the status of the Replicator, enter this command at the console: Show Tasks The server displays one of the following messages: • If the server is not replicating, the word Idle appears next to the Replicator program. • If the server is replicating, a status line, such as Replicating CONTRACT.NSF from MARKETING\CONTRACT.NSF, appears. To optimize resources Domino only replicates what is necessary. For example, if the servers have recently replicated and no changes have been made to any databases on either server since, the servers do not replicate when you enter a Replicate command. Also, the replication is two-way only if databases on both servers have changed since the last replication. If databases on only one of the servers have changed, the replication is one-way. To force replication in only one direction, use the Pull or Push server commands. Examples: > replicate domino5\ITSO2 Initiates replication between your server and the domino5\ITSO2 server. > replicate domino5\ITSO2 NAMES.NSF Initiates replication of NAMES.NSF between your server and the domino5\ITSO2 Restart Syntax: Restart Description: Stops the server and then restarts the server after a brief delay. If you stop a server while it is replicating databases or routing mail, these tasks resume at the next scheduled interval after you restart the server. Replication or mail routing continues until the databases are fully replicated and until the complete mail message is transferred or returned to the sender. Before you use the Restart server command to stop the server, use the Broadcast server command to warn users to finish their current tasks before you stop the server. Route Syntax: Route servername Description: Initiates mail routing with a specific server. The Route command overrides any mail routing schedules that you create in the Connection documents in the Domino Directory. Use the Route command for servers that are configured for Pull, Pull Push, Push, or Push Wait routing in the Connection document. Use the server's full hierarchical name, if applicable. If the server name is more than one word, enclose the entire name in quotes. Use the Route command to troubleshoot mail problems and to send mail to or request mail from a server immediately. 68 Debugging UNIX Applications on OS/390 If no mail is queued for routing, Domino ignores the Route command. To check which servers have mail queued, enter this command at the console: Tell Router Show Example: > route domino5\ITSO2 Sends mail to the Marketing server in the ITSO2 domain. The server console displays messages indicating when routing begins. Set configuration Syntax: Set Configuration setting Description: Adds or changes a setting in the NOTES.INI file. Example: > set config SERVERTASKS=Router,Replica,Update,Amgr,AdminP,CalConn,Sched,Event,S tats,HTTP,DECS Set secure Syntax: Set Secure currentpassword Description: Password-protects the console. After you password-protect the console, you can not use the Load, Tell, Exit, Quit, and Set Configuration server commands or other programs that are not run automatically through Program documents in the Domino Directory or through the NOTES.INI file until you enter the password again. Console security remains in effect until you clear the password by entering a second Set Secure command with the same password. Even if the console is password-protected, keep the server physically secure to prevent breaches of security at the operating system level. Examples: > set secure dominor5 > load http This command is not permitted when console security is in effect > set secure dominor5 > load http If you do not want to type the password on the console (because it is shown there), type it using Domino administration: 1. From the Domino Administrator, click the Server - Status tab. 2. If necessary, click Tools to display the tool bar, and click Server - Secure console. Lotus Domino for S/390—troubleshooting/hints/tips 69 Figure 23. Set secure Set statistics Syntax: Set Statistics statisticname Description: Resets a statistic that is cumulative. Statisticname is a required parameter that names the statistic to be reset. You cannot use wildcards (*) with this argument. Example: > set stat Server.Trans.Total Resets the Server.Trans.Total statist to 0 Show allports Syntax: Show Allports Description: Displays the configuration for all enabled and disabled ports on the server. Example: > show allports Enabled Ports: TCPIP=TCP, 0, 15, 0 Disabled Ports: SPX=SPX, 0, 15, 0 Serial1=XPC,1,15,0, Serial2=XPC,2,15,0, Show cluster Syntax: Show Cluster Description: Displays the local server's cluster name cache, which includes a list of all cluster members and their status, based on information received during the server's cluster probes. 70 Debugging UNIX Applications on OS/390 This example displays the cluster name cache of the Mars server, which is in the Planets cluster, which is in the Solarsys domain: > show cluster Cluster Information Cluster name: planets/solarsys, Server name: mars/solarsys Server cluster probe timeout: 1 minute(s) Server cluster probe count: 2604 Server cluster probe port: NetBEUI Server availability threshold: 10 Server availability index: 98 (state: AVAILABLE) Cluster members (2)... server: mars/solarsys, availability index: 98 server: saturn/solarsys, availability index: BUSY > Show configuration Syntax: Show Configuration setting Description: Displays the current value for a NOTES.INI setting. Use the Show Configuration and Set Configuration server commands together to ensure that you correctly set the NOTES.INI settings. Examples: > sh config domain DOMAIN=ITSO2 > sh config servertasks SERVERTASKS=Router,Replica,Update,Amgr,AdminP,CalConn,Sched,Event,Stats,HTTP,DEC S > Show directory Syntax: Show Directory Description: Lists all database files (for example, .NSF and .NTF) in the data directory and specifies whether the data directory contains multiple replicas of a database. This command works only for the data directory; you cannot specify another directory. Example: > show directory . . . /notesdata/admin4.ntf /notesdata/admin4.nsf /notesdata/log.nsf /notesdata/names.nsf lica's) > V4 V5 V5 V5 N/A N/A N/A N/A 05/06/99 07/01/99 07/01/99 07/01/99 05:00:51 12:02:07 06:29:07 02:00:21 AM AM PM AM (3 Rep Lotus Domino for S/390—troubleshooting/hints/tips 71 Show diskspace Syntax: Show Diskspace location Description: Displays the amount of space, in bytes, available on the HFS file system. An HFS is selected by adding the HFS’s mount point using the location parameter. Example: The directories /u, /etc, and /var that are mentioned in the following figure are all located on the same physical disk but are mounted using different HFS data sets: > show diskspace /u Available disk space 12,591,104 bytes > show diskspace /etc Available disk space 37,535,744 bytes > show diskspace /var Available disk space 6,557,696 bytes > Show memory Syntax: show memory Description: Displays the memory statistics for the server. Example: > show memory Memory Available: 512 Mbytes > Show port Syntax: show port portname Description: Displays traffic and error statistics Example: > show port tcpip TCP/IP Port Driver Transport Provider: TCP Notes Session 175A0004 175A0007 175C0003 17600002 Local Address 9.12.2.35:1352 9.12.2.35:1352 9.12.2.35:1352 9.12.2.35:1352 Foreign Address 9.12.2.167:1049 9.12.2.163:1136 9.12.2.163:1150 *:* Show schedule Syntax: Show Schedule servername/taskname/location Description: Shows the next time that a server task runs. Output includes the type of task and the time it runs next. If you enter a location as an argument, the workstation replication schedule for that location appears. 72 Debugging UNIX Applications on OS/390 Examples: > show schedule > show schedule fixup Displays a list of all scheduled tasks Shows when the Fixup task is scheduled to run next Show server Syntax: Show Server Description: Shows server status information including the server name, data directory on the server, time elapsed since server startup, transaction statistics, and the status of shared, pending, and dead mail. Example: > show server Lotus Domino (r) Server (Release 5.0a (Intl) for UNIX) 07/01/99 04:13:37 PM Server name: Server directory: Partition: Elapsed time: Transactions/minute: Peak # of sessions: Transactions: Availability Index: Message Tracking: Shared mail: Number of Mailboxes: Pending mail: 0 Waiting Tasks: Domino4/Itso2 /domino4/notesdata .domino4.notesdata 06:05:34 Last minute: 4; Last hour: 1; Peak: 126 6 at 07/01/99 11:29:05 AM 588 100 (state: AVAILABLE) Not Enabled Not Enabled 1 Dead mail: 0 0 Show stat Syntax: Show Stat statisticname Description: Used without the optional statisticname argument, displays a list of server statistics for disk space, memory, mail, replication, and network activity. To display a single statistic, enter the name of the statistic as the optional argument. To display only a subset of statistics, add a group of statistics as an optional argument by using an asterisk (*) as a wildcard. Example: > show stat server.version.notes Server.Version.Notes = Release 5.0a (Intl) > show stat server.version.os Server.Version.OS = OS/390 > show stat server.users.peak.time Server.Users.Peak.Time = 07/01/1999 11:29:05 EDT > show stat database.n* Database.NAMELookupCache.Peak = 1,048,576 Database.NAMELookupCache.Used = 468,224 Database.NIFPool.Peak = 1,048,576 Database.NIFPool.Used = 249,248 Database.NSFPool.Peak = 1,048,576 Database.NSFPool.Used = 221,824 > Lotus Domino for S/390—troubleshooting/hints/tips 73 Show tasks Syntax: Show Tasks Description: Displays the name of the server, the path of the Domino program directory, and the status of the active server tasks. Example: Lotus Domino (r) Server (Release 5.0a (Intl) for UNIX) 07/01/99 04:37:07 PM Server name: Domino4/Itso2 Server directory: /domino4/notesdata Partition: .domino4.notesdata Elapsed time: 06:29:04 Transactions/minute: Last minute: 2; Last hour: 2; Peak: 126 Peak # of sessions: 6 at 07/01/99 11:29:05 AM Transactions: 678 Availability Index: 100 (state: AVAILABLE) Message Tracking: Not Enabled Shared mail: Not Enabled Number of Mailboxes: 1 Pending mail: 0 Dead mail: 0 Waiting Tasks: 0 Transactional Logging: Not Enabled Task Description Database Server Perform console commands Database Server Listen for connect requests on TCPIP Database Server Load Monitor is idle Database Server Perform Database Cache maintenance Database Server Idle task Database Server Server for Manfred Hauff/Itso2 on TCPIP Database Server Server for Wilhelm Michel/Itso2 on TCPIP Database Server Server for Wilhelm Michel/Itso2 on TCPIP HTTP Web Server Listening on port(s) 80 Stats Idle Event Monitor Idle Schedule Manager Idle Calendar Connector Idle Admin Process Idle Agent Manager Executive '1': Idle Agent Manager Idle Indexer Idle Replicator Idle Router Idle Show users Syntax: Show Users Description: Displays a list of all users who have established sessions with the server, whether the users are actively working in databases or not, the names of databases that each user has open, and the elapsed time, in minutes, since the databases were last used. Tell Syntax: Tell serverprogram Description: Issues a command to a server program or task. The command is especially useful for stopping a server task without stopping the server. This is the most powerful server command with a lot of possibilities. 74 Debugging UNIX Applications on OS/390 Example: > tell http quit Stops only the http task. All other tasks on the server continue to run. Specialized Tell commands Some Tell commands are common to all server tasks, for example, Tell task Quit. Other Tell commands are unique to a particular task. These tasks have unique Tell commands and are available for the following services: • Administration Process • Agent Manager • Cluster Replicator • NNTP • LDAP • Router • Schedule Manager • Statistic Collector • Web Navigator • Web Server Note For detailed information about all the different tell commands refer to the Domino5 Administration Help Guide (help5_admin.nsf) Chapter "Domino server commands". 2.3.6 Programs (compact, update, updall, and fixup) In this section we describe the four major utilities, compact, update, updall, and fixup, how to use each and some of the available parameters. It is a summary of the Domino 5 Administration Help. 2.3.6.1 Compact When documents and attachments are deleted from a database, Domino tries to reuse the unused space, rather than immediately reducing the file size. Sometimes Domino will not be able to reuse the space or, due to fragmentation, cannot reuse the space effectively, until you compact the database. Note that Release 5 is much better at reusing space in Release 5 format databases, so compacting is needed less often than in past releases. There are three styles of compacting used in Release 5: • In-place compacting with space recovery only • In-place compacting with space recovery and reduction in file size • Copy-style compacting Lotus Domino for S/390—troubleshooting/hints/tips 75 In-place compacting with space recovery only This style of compacting recovers unused space in a database but does not reduce the size of the database on disk. Databases retain the same database instance IDs (DBIIDs), so the relationship between the compacted databases and the transaction log remains intact. Users and servers can continue to access and edit databases during compacting. This style of compacting is useful for Release 5 databases that you expect to either stay the same size or grow in size. When you run Compact without specifying options, Domino uses this style of compacting on all Release 5 format databases enabled for transaction logging. Domino also uses this style of compacting when you use the -B option (case-sensitive) when compacting any Release 5 format database. Use this compacting method the most frequently, it is the fastest method and causes the least system impact. In-place compacting with space recovery and reduction in file size This style of compacting reduces the file size of Release 5 databases as well as recovering unused space in databases. This style of compacting is somewhat slower than in-place compacting with space recovery only. This style of compacting assigns new DBIIDs to databases, so if you use it on logged databases and you use a Release 5-certified backup utility, do full backups of the databases shortly after compacting is complete. This style of compacting allows users and servers to continue to access and edit databases during compacting. When you run Compact without specifying options, Domino uses this style of compacting on Release 5 databases that are not enabled for transaction logging. Domino also uses this style of compacting when you use the -B option (case-sensitive) when compacting Release 5 format databases. To optimize disk space, it is recommended that you run Compact using the -B option on all Release 5 format databases once a week or once a month. Copy-style compacting Copy-style compacting creates copies of databases and then deletes the original databases after compacting completes, so extra disk space is required to make the database copies. This style of compacting essentially creates a new database with a new database ID. If you use copy-style compacting on Release 5 logged databases (using the -C option), compacting assigns new DBIIDs, so if you use a Release 5-certified backup utility, you should do full backups of databases shortly after compacting completes. When you use copy-style compacting, users and servers cannot edit databases during compacting and they can only read databases if the -L option is used. Domino uses copy-style compacting by default when you use an option with Compact to enable a database property that requires a structural change to a database or when you run Compact on a database that has a structural change pending that was initiated from the Database Properties box. Enabling or disabling the database properties, Document table bitmap optimization, and Do not support specialized response hierarchy, requires structural database changes. Compacting a Release 4 format database also uses copy-style 76 Debugging UNIX Applications on OS/390 compacting. Note that if you compact a Release 4 format database without using the -R option, compacting converts the database to the Release 5 format. Table 20. Comparison of the three styles of compaction Characteristics In place, space recovery In place, space recovery with file size reduction Copy-style Databases that use it when compact runs without options R5 logged databases with no pending structural changes R5 unlogged databases with no pending structural changes R4 databases; R5 databases with pending structural changes Databases you can use it on R5 R5 All (Need -C for R5 databases) Relative speed Fastest Medium Slowest Users can read databases during compacting Yes Yes No (unless -L option used) Users can edit databases during compacting Yes Yes No Reduction in file size No Yes Yes Extra disk space required No No Yes There are four ways to compact databases: 1. Run Compact using the Compact tool in the Files tab of the Domino Administrator. Use this method to compact a few databases; you can easily select the databases to compact, but you cannot use the Domino Administrator until compacting finishes. 2. Run Compact using the Task-Start tool in the Domino Administrator. Use this method to easily compact all databases on a server; you can continue to use the Domino Administrator during compacting and you do not have to remember specific command-line options. 3. Run Compact using the Domino console. Use this method if you are comfortable using command-line options or to compact databases directly at the server when there is not a Domino Administrator client running on the server. •Load compact databasepath options 4. Run Compact using a Program document. Use this method to schedule compact to run at particular times. • From the Domino Administrator, click the Configuration tab. • Next to "Use Directory on," select the server with the replica of the Domino Directory that you want to modify. • Expand Server - Programs and then click Add Program. • Complete the Basics tab. • Complete the Schedule tab. Lotus Domino for S/390—troubleshooting/hints/tips 77 • Click Save and Close. The following table describes the options you can use with the Compact server task. The first column lists the options as they appear when you run Compact using the Task - Start tool or the Files tab in the Domino Administrator. The second column lists the equivalent command-line options that you use when you run Compact using a console command or using a Program document: Table 21. Short summary of options for the Compact utility 78 Option Command-line equivalent Description Compact only this database or folder database path Specify any additional options after the database path. To compact a database in the Domino data folder, enter the file name, for example SALES.NSF. To compact databases in a folder within the data folder, specify the database path relative to the data folder. Keep or revert database back to R4 format -R Compacts databases without converting to the current release file format of the server that stores the databases or reverts databases in the current release file format to the previous release file format. Compact database only if unused space is greater than x percent -S percent Compacts all databases with a specified percent of unused space. Discard any built view indexes -D Use this option to compact databases just before you store them on tape, for example. Does copy-style compacting. Compaction style: In-place (recommended) -b Uses in-place compaction and recovers unused space without reducing the file size, unless there is a pending structural change to a database, in which case copy-style compaction occurs. This is the recommended method of compacting. Compaction style: In-place with file size reduction -B Uses in-place compaction, recovers unused space and reduces file size, unless there is a pending structural change in which case copy-style compacting occurs. Compaction style: Copy-style -C Uses copy-style compaction. Use this option, for example, to solve database corruption problems with Release 5 format databases. Compaction style: Copy-style: Allow access while compacting -L Enables users to continue to access databases during compacting. If a user edits a database during compacting, compacting is canceled. This is useful only when copy-style compacting is done. Debugging UNIX Applications on OS/390 As mentioned before, there are a couple of more options available. For a complete list of them please refer to the Domino 5 Administration Help. 2.3.6.2 Update and Updall The Update and Updall tasks keep view indexes and full-text indexes up-to-date. Update is loaded at server startup by default and runs continually, checking its work queue for views and folders that require updating. When a view or folder change is recorded in the queue, Update waits approximately 15 minutes before updating all view indexes in the database so that the update can include any other database changes made during the 15-minute period. After updating view indexes in a database, it then updates all databases that have full-text search indexes set for immediate or hourly updates. When Update encounters a corrupted view index or full-text index, it rebuilds the view index or full-text index in an attempt to correct the problem. This means it deletes the view index or full-text index and rebuilds it. Updall is similar to Update, but it does not run continually or work from a queue; instead you run Updall as needed. You can specify options when you run Updall, but without them Updall updates any view indexes or full-text search indexes on the server that need updating. To save disk space, Updall also purges deletion stubs from databases and discards view indexes for views that have been unused for 45 days, unless the database designer has specified different criteria for discarding view indexes. Use the NOTES.INI setting Default_Index_Lifetime_Days to change when Updall discards unused view indexes. Like Update, Updall rebuilds all corrupted view indexes and full-text search indexes that it encounters. By default Updall is included in the NOTES.INI setting ServerTasksAt2, so it runs daily at 2:00 A.M. Running Updall daily helps save disk space by purging deletion stubs and discarding unused view indexes. It also ensures that all full-text search indexes that are set for daily updates are updated. The following table compares the characteristics of Update and Updall. For Updall, the table describes default characteristics, some of which you can modify using options: Table 22. Compare Update and Updall characteristics Characteristic Update Updall When it runs. Continually after server startup. 2:00 A.M. and when you run it. Runs on all databases? No. Runs only on databases that have changed. Yes Refreshes views indexes? Yes Yes Updates full-text indexes? Yes. Updates full-text indexes set for immediate and hourly updates. Yes. Updates all full-text indexes. Lotus Domino for S/390—troubleshooting/hints/tips 79 Characteristic Update Updall Detects and attempts to rebuild corrupted view indexes? Yes Yes Detects and attempts to rebuild corrupted full-text indexes? Yes Yes Can customize with options? No Yes You can use three different methods to run Updall: 1. Task - Start tool in the Domino Administrator. Use this method if you do not want to remember command-line options. 2. Load updall console command. Use this method if you are comfortable using command-line options or if you want to run Updall directly at the server console when there is no Domino Administrator running on the server machine. •Load updall databasepath options 3. Program document that runs Updall. Use this method to schedule Updall to run at particular times. • From the Domino Administrator, click the Configuration tab. • Next to "Use Directory on," select the server with the replica of the Domino Directory that you want to modify. • Expand Server - Programs and then click Add Program. • Complete the Basics tab. • Complete the Schedule tab. • Click Save and Close. Table 23. Updall options Option in Task - Start tool Command-line option Description - Index all databases - Index only this database or folder database path "Only this database" updates only the specified database. "Index all databases" (or no database path) updates all databases on the server. Update this view only database -T viewtitle Updates a specific view in a database. Use, for example, with -R to solve corruption problems. Update: All built views -V Updates built views and does not update full-text indexes. Update: Full text indexes -F Updates full-text indexes and does not update views. Please see the Domino 5 Administration Help for additional information. 80 Debugging UNIX Applications on OS/390 2.3.6.3 Fixup When you restart a server, the server quickly searches for any Release 4 format databases and any unlogged Release 5 databases that were modified but improperly closed because of a server failure, power failure, hardware failure, and so on. A few minutes after server startup is complete, the Fixup task then runs on these databases to attempt to fix any inconsistencies that resulted from partially written operations caused by a failure. When users attempt to access one of these databases and Fixup has not yet run on the database, the users see the message, "This database cannot be opened because a consistency check of it is in progress." A similar Fixup process occurs when you restart a Notes client. Multiple Fixup tasks run simultaneously at server startup to reduce the time required to fix databases. The number of Fixup tasks that Domino runs by default at startup is equal to two times the number of processors available on the server. Although this default behavior should be adequate in most circumstances, you can edit the NOTES.INI file to include the Fixup_Tasks setting. The actual number of tasks run is the smaller of the configured number of tasks that can run and the number of databases that require fixing. For example, if you set Fixup_Tasks to 4, but only one database requires fixing, then only one Fixup task runs. Note: Keep in mind that after you convert Release 4 databases to Release 5 and set up transaction logging, Fixup is not needed or used to bring databases back to a consistent state. Four ways to run Fixup manually 1. Run Fixup using Fixup tool in the Files tab. Use this method to run Fixup on one or a few databases; you can easily select the databases and you do not have to remember command-line options, but you cannot use the Domino Administrator until Fixup finishes. 2. From the Domino Administrator, select the server that stores the databases on which you want to run Fixup. If the Domino Administrator does not run on a server, you can select local to run Fixup on databases stored on the client. • Click the Files tab. • Select the databases on which to run Fixup. • On the Tools panel at the right, select Database - Fixup. • (Optional) Select options to control how Fixup runs. • Click OK. 3. Run Fixup using the Task - Start tool. Use this method to run Fixup on all databases; you can continue to use the Domino Administrator while Fixup runs and you do not have to remember command-line options. 4. Run Fixup using a console command. Use this method if you are comfortable using command-line options or to run Fixup directly at the server console when there is not a Domino Administrator client available. •Load fixup options 5. Run Fixup using a program document. Use this method to schedule Fixup to run at particular times. • From the Domino Administrator, click the Configuration tab. Lotus Domino for S/390—troubleshooting/hints/tips 81 • Next to "Use Directory on" select the server with the replica of the Domino Directory that you want to modify. • Expand Server - Programs. • Select Server - Programs and then click Add Program. • On the Basics tab, complete the fields. • On the Schedule tab, complete the fields. • Click Save and Close. Table 24. Fixup options Fixup options in Fixup tool and Task - Start tool Command-line equivalent Description - Fixup all databases - Fixup only this database or folder database path "Fixup only this database or folder" runs Fixup only on a specified database or all databases in a specified folder. "Fixup all databases" or no command-line database path runs Fixup on all databases on the server. Report all processed databases to log file -L Reports to the log file every database Fixup opens and checks for corruption. Without this argument, Fixup logs only actual problems encountered. Scan only since last fixup -i Running Fixup on a specific database causes Fixup to check only documents modified since Fixup last ran. Without this option, Fixup checks all documents. Scan all documents -F Runnning Fixup on all databases causes Fixup to check all documents in the databases. Without this option, Fixup checks only documents modified since it last ran. Perform quick fixup -Q Causes Fixup to check documents more quickly but less thoroughly. Without this option, Fixup checks documents thoroughly. Exclude views (faster) -V Prevents Fixup from running on views. This option reduces the time it takes Fixup to run. Use if view corruption is not a problem. Fixup transaction-logged databases -J Causes Fixup to run on Release 5 databases that are enabled for transaction logging. Without this option, Fixup generally does not run on logged databases. If you are using a backup utility certified for Domino Release 5, it is important that you schedule a full back of the database as soon as possible after Fixup finishes. See Domino 5 Administration Help for more details. 82 Debugging UNIX Applications on OS/390 2.4 Hints and tips This section contains common hints and tips that cover possible pitfalls and important information about Lotus Domino for S/390. 2.4.1 How to edit the notes.ini file The notes.ini file is an important configuration file that contains initialization settings for the Lotus Domino server. For example, it tells the server which server tasks to run during startup. The notes.ini file is located in the Notes data directory, which is by default /notesdata on S/390. On OS/390 this file is stored in ASCII format and not in EBCDIC. The Domino server uses the first notes.ini file it finds in the path. If you have multiple copies of the notes.ini file on your system, the server may start with incorrect settings, or it may not even start. It is therefore recommended to have only one notes.ini file accessible to the server. The following two figures show a sample notes.ini file: [Notes] Directory=/domino4/notesdata KitType=2 SetupDB=setupweb.nsf UserName= CompanyName= SERVER_POOL_TASKS=100 SERVER_CONSOLE_CODEPAGE=1047 SERVER_ENABLE_THREADPOOL=1 NSF_BUFFER_POOL_SIZE_MB=5 PhoneLog=2 Log=log.nsf, 1, 0, 7, 40000 Passthru_LogLevel=0 Figure 24. Sample notes.ini - Part 1 Lotus Domino for S/390—troubleshooting/hints/tips 83 NSF_BUFFER_POOL_SIZE_MB=50000000001010100000A0000000000000100A0050A0000006 400A0050A00000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000940400000000 NAMEDSTYLE1=030042756C6C65740000000000000000000000000000000000000000000000 00000000000000000001010100000A000000000000000008070A000000640008070A000000 0000000000000000 NAMEDSTYLE1_FACE=Default Sans Serif NAMEDSTYLE2=0300486561646C696E65000000000000000000000000000000000000000000 000000 NAMEDSTYLE2=0300486561646C696E65000000000000000000000000000000000000000000 00000000000000010101010B0C0000000000000100A0050A0000006400A0050A0000000000 00000000000000000000000000000000000000000000000000000000000000000000000000 0000009404000000000000 NAMEDSTYLE2_FACE=Default Sans Serif $$$NotesNIC=CN=Home/OU=Notes/O=NET, welcome.nsf, Notes NIC Welcome, Notes Network Information Center on the Internet DefaultMailTemplate=mail50.ntf Preferences=32 ServerTasks=Router,Replica,Update,Amgr,AdminP,CalConn,Sched,Event,Stats,HT TP,DECS ServerTasksAt1=Catalog,Design ServerTasksAt2=UpdAll,Object Collect mailobj.nsf ServerTasksAt3=Object Info -Full ServerTasksAt5=Statlog TCPIP=TCP, 0, 15, 0 TCPIP_TcpIpAddress=0,9.12.2.35:1352 SPX=SPX, 0, 15, 0 Serial1=XPC,1,15,0, Serial2=XPC,2,15,0, $$HasLANPort=1 Ports=TCPIP DisabledPorts=SPX,Serial1,Serial2 LOG_REPLICATION=0 LOG_SESSIONS=0 ExistingServerName=CN=tot105/O=itso2 SETUP_ERRORPATH=File already exists: /u/domino4/domino4.id KeyFilename=/u/domino4/domino4.id SETUP_PERCENTDONE=100 SETUP_STATUS=Updating network settings ServerKeyFileName=/u/domino4/domino4.id Domain=ITSO2 Admin=CN=Manfred Hauff/O=ITSO2 EXTMGR_ADDINS=decsext TemplateSetup=54 Setup=58 ServerSetup=50 Timezone=5 DST=1 CleanSetup=1 TRANSLOG_AutoFixup=1 TRANSLOG_UseAll=0 TRANSLOG_Style=0 TRANSLOG_Performance=2 Figure 25. Sample notes.ini - Part 2 84 Debugging UNIX Applications on OS/390 There are several different ways to edit this file: • Edit the file from an OMVS session using the OEDITASCII editor. • Edit the file from an rlogin or telnet session using the viascii editor. • Transfer the file to a workstation, edit there, and then transfer it back. Note Make sure you have a valid copy of notes.ini before editing this file. 2.4.1.1 Edit notes.ini from OMVS using OEDITASCII 1. Log on to TSO with a user ID having an OMVS segment. 2. Issue the TSO OMVS command to enter the OS/390 UNIX shell. 3. In the OS/390 UNIX shell, change to the /notesdata directory, using the UNIX command cd /notesdata. 4. Copy the notes.ini file to a backup, for example, cp notes.ini notes.old. 5. Edit the notes.ini file: /usr/lpp/lotus/bin/tools/oeditascii notes.ini. Now you can use all availabe ISPF edit line commands to move, copy, delete, or repeat lines. 2.4.1.2 Edit from a telnet or rlogin session using viascii 1. Log on to the S/390 server using telnet or rlogin from a workstation. You will enter the OS/390 UNIX shell. 2. Change to the notesdata directory, for example, cd /notesdata. 3. Copy the notes.ini file to a backup, for example, cp notes.ini notes.old. 4. Edit the notes.ini file: /usr/lpp/lotus/bin/tools/viascii notes.ini. You should be aware of the vi editor commands when using this method. 2.4.1.3 Transfer notes.ini file to a workstation and edit it there You can transfer the notes.ini file to a workstation using FTP or any other program to download files from the host to your workstation. 1. Download the file to the workstation in binary mode. 2. Edit the file using a workstation editor. 3. Upload the file to the host in binary mode. 2.4.2 Cleaning up server resources It may happen that after a server shutdown using the quit or exit command, a server crash, or some other unknown circumstances there are still some resources allocated. Therefore, we recommend to check the availability of these resources and remove them before the server is started again. To get a list of the IPC resources (interprocess communication) use the ipcs -bo UNIX command as shown in Figure 26. Lotus Domino for S/390—troubleshooting/hints/tips 85 DOMINO4 @ SC63:/u/domino4>ipcs -bo Message Queues: Shared Memory: T ID KEY MODE m 40004 0xf83a8000 --rw-rw---m 40005 0xf83a8001 --rw-rw---m 40006 0x010d0144 --rw-rw-rwm 40007 0xf83a8002 --rw-rw---Semaphores: T ID KEY MODE s 85540 0xf83a8000 --ra-ra---s 20005 0xf83a8270 --ra-ra---s 20006 0x010d0145 --ra-ra-ras 20007 0x020d0145 --ra-ra-ras 20008 0x030d0145 --ra-ra-ras 20009 0xf83a8001 --ra-ra---s 20010 0xf83a8002 --ra-ra---s 20011 0xf83a8003 --ra-ra---s 20012 0xf83a8004 --ra-ra---s 20013 0xf83a8005 --ra-ra---s 20014 0xf83a8006 --ra-ra---DOMINO4 @ SC63:/u/domino4> OWNER DOMINO4 DOMINO4 DOMINO4 DOMINO4 GROUP OEDOMINO OEDOMINO OEDOMINO OEDOMINO NATTCH SEGSZPG 14 1682 14 2048 14 7 14 2048 OWNER DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 DOMINO4 GROUP NSEMS OEDOMINO 16 OEDOMINO 16 OEDOMINO 3 OEDOMINO 3 OEDOMINO 3 OEDOMINO 16 OEDOMINO 16 OEDOMINO 16 OEDOMINO 16 OEDOMINO 16 OEDOMINO 16 Figure 26. Display of semaphores and shared memory resources If it happens that these Lotus Domino related resources are still available, you have to clean them up manually using the UNIX command ipcrm: • ipcrm -m <id> (for shared memory) • ipcrm -s <id> (for semaphores) Note Check if the resources are Lotus Domino related and do not belong to any other application like the Websphere Application Server. In some rare cases we have not been successful in getting rid of these resources as previously described. You then have to use one of the following methods: • From the OS/390 UNIX shell using the command kill <process ID> • From the MVS console or SDSF using: • STOP command (p) • CANCEL command (c) • FORCE command (consider the FORCE command as a last resort when the CANCEL command still fails) • Modify command: F BPXOINIT,TERM=<process IDd> • Modify command: F BPXOINIT,FORCE=<process IDd> 2.4.3 The HTTP task The following sections give hints and tips concerning the HTTP task. 86 Debugging UNIX Applications on OS/390 2.4.3.1 Starting/stopping the HTTP task The HTTP task is started in two ways: 1. Using the SERVERTASKS parameter in the notes.ini: . . ServerTasks=Router,Replica,Update,HTTP,AdminP,CalConn,Sched,Event . . 2. Using the server console command load: > load http 07/05/99 09:00:49 PM HTTP Web Server started The HTTP task is stopped with the tell command: > tell http quit > 07/05/99 08:59:02 PM HTTP Web Server shutdown > 2.4.3.2 Activating HTTP in the server’s administration In the administration function of the Lotus Domino S/390 server, select Server --> Current Server Document --> Internet Protocols where you can allow HTTP clients to browse databases: Figure 27. Activating HTTP - Internet protocols Lotus Domino for S/390—troubleshooting/hints/tips 87 Configure the server by clicking Server --> Current Server Document --> Ports to define a port number to http; in Figure 28 this is port 8080. Also Anonymous or Name and password settings can be defined here: Figure 28. Activating HTTP - server configuration The user name and password are set in the Person Document in the server’s Names and Address Book (NAB). This can be done only by the Administrator: Figure 29. Activating HTTP - Internet password 88 Debugging UNIX Applications on OS/390 Now the server can be accessed using an Internet browser after verification of the user name and password as shown in the following figures: Figure 30. Activating HTTP - password prompt Figure 31. Activating HTTP - accessing Domino databases using an Internet browser 2.4.3.3 Problems with the HTTP task If there are problems with the HTTP task, use the TSO NETSTAT command for checking what ports are defined and listening, as shown in the following example: Lotus Domino for S/390—troubleshooting/hints/tips 89 ------BPXOINIT DOMINO1 DOMINO1 DOMINO2 DOMINO4 DOMINO4 DOMINO6 FTPD61 INETD7 INETD7 INETD7 INETD7 INETD7 TCPIP6 TCPIP6 TCPIP6 ---0000E 00140 00141 0013E 001C0 00123 00216 00005 00121 0000B 0000A 0000D 0000C 00006 00007 00002 -----------0.0.0.0..10007 0.0.0.0..389 0.0.0.0..143 0.0.0.0..25 9.39.3.213..1352 0.0.0.0..1352 0.0.0.0..8080 0.0.0.0..21 9.39.3.213..623 0.0.0.0..514 0.0.0.0..623 0.0.0.0..512 0.0.0.0..513 127.0.0.1..1026 127.0.0.1..1025 0.0.0.0..1025 -------------0.0.0.0..0 0.0.0.0..0 0.0.0.0..0 0.0.0.0..0 9.12.2.163..1472 0.0.0.0..0 0.0.0.0..0 0.0.0.0..0 9.12.2.163..1066 0.0.0.0..0 0.0.0.0..0 0.0.0.0..0 0.0.0.0..0 127.0.0.1..1025 127.0.0.1..1026 0.0.0.0..0 ----Listen Listen Listen Listen Establsh Listen Listen Listen Establsh Listen Listen Listen Listen Establsh Establsh Listen Figure 32. TSO NETSTAT command With the command TSO NETSTAT ALL, more detailed information is shown. There are also ways that you can check for the availability of a task. See “Available server tasks” on page 95 for more information. Note Be aware of conflicting port numbers, means- check if any other task is just mapped on the port you want to use for the http task, for example in the /etc/services or TCPIP PROFILE. 2.4.4 The POP3 task POP3 stands for Post Office Protocol (Version) 3. POP3 is an Internet protocol that allows any client running POP3 (such as Netscape Navigator or Microsoft Outlook Express) to retrieve mail from a Notes server that has the POP3 server task loaded. You can set up a Domino server to run the POP3 service. Then, POP3 users can periodically connect to the Domino server to retrieve their mail. To allow POP3 users to send mail, the SMTP protocol must be used. SMTP must be installed, configured, and the SMTP task must be loaded on the server. The following sections give hints and tips concerning the POP3 task. 2.4.4.1 Starting/stopping the POP3 task The POP3 task is started in two ways: 1. Using the SERVERTASKS parameter in the notes.ini: . . ServerTasks=Router,Replica,Update,POP3,AdminP,CalConn,Sched,SMTP . . 90 Debugging UNIX Applications on OS/390 2. Using the server console command load: load pop3 > 07/05/99 10:55:25 PM POP3 Server: Started The POP3 task is stopped with the tell command: > tell pop3 quit 07/05/99 10:53:55 PM POP3 Server: Waiting for all tasks to complete 07/05/99 10:53:55 PM POP3 Server: All tasks have completed 07/05/99 10:53:55 PM POP3 Server: Shutdown > 2.4.4.2 Activating POP3 in the server’s administration function In the administration function of the Lotus Domino S/390 server, select Server --> Current Server Document --> Ports --> Internet Ports to enable TCP/IP port 110 (POP). If password checking should be done, set Name and password checking to YES as shown in Figure 33: Figure 33. Activating POP3 - server configuration Defining a POP3 user In the Domino administration select People & Groups --> Add person and fill out the forms. An example is shown in Figure 34 and Figure 35: Lotus Domino for S/390—troubleshooting/hints/tips 91 Figure 34. Defining a POP3 user - basic Figure 35. Defining a POP3 user - mail 92 Debugging UNIX Applications on OS/390 Create a mail database for the POP3 user Choose File --> Database --> New. Figure 36 shows an example: Figure 36. Creating mail database for a POP3 user ACL setting Now the ACL for the POP3 user’s mail database has to be set up by opening the mail database and then selecting File --> Database --> Access Control. Edit the ACL to give the user Manager with Delete documents access. An example is shown in Figure 37: Figure 37. ACL of the POP3 user’s mail database Lotus Domino for S/390—troubleshooting/hints/tips 93 Configure the browser to receive mail The following example is based on Netscape Communicator 4.6. Select Edit --> Preferences --> Mail Server and make the necessary entries for the POP3 server as shown in Figure 38: Figure 38. Netscape mail server properties Now you can get mail using the mail server into your browser by choosing Communicator --> Messenger. The browser’s mail tool comes up where the messages can be read as shown in Figure 39: Figure 39. Netscape Communicator 4.6 - Messenger view 94 Debugging UNIX Applications on OS/390 2.4.4.3 Problems with the POP3 task? This section discusses some of the possible pitfalls of the POP3 task. TSO NETSTAT command If there are problems with the POP3 task, it is a good choice to use the TSO NETSTAT command for checking what ports are defined and listening as shown in Figure 32 on page 90. Available server tasks By using the show tasks command the availability of a task can be determined. This can also be done in the Domino R5 administration, therefore select Server --> Status: Figure 40. Available server tasks POP3Domain error If the POP3 task is started using the command load pop3, the following error message could come up: > load pop3 Initialization Failure: POP3Domain Environment Variable is Not Defined In this case you should add this environment variable to the notes.ini as follows: . . POP3Domain=ITSO2 . . Lotus Domino for S/390—troubleshooting/hints/tips 95 2.4.4.4 How POP3 is integrated in a Notes mail environment The Lotus Domino POP3 server task allows non-Notes client hosts to participate in the Notes Mail environment without using the Notes Workstation software. In this way, a POP3 server is integrated into the Notes Mail environment. Figure 41. Integration of POP3 in a Notes mail environment 2.4.5 The SMTP task Simple Mail Transfer Protocol (SMTP) runs on a Domino Server and is used for the transfer of mail. It is not a mail client. The end user will need to have a mail client such as Notes, IMAP, or POP3. The following sections give some hints and tips concerning the SMTP task: 2.4.5.1 Starting and stopping the SMTP task As described in the preceding section, the SMTP task can be started and stopped like the POP3 task. Please refer to 2.4.4.1, “Starting/stopping the POP3 task” on page 90 for the description and usage of the commands. 2.4.5.2 Enabling SMTP in the server’s administration function To enable the SMTP listener task, choose Server --> Current Server Document --> Basics. 96 Debugging UNIX Applications on OS/390 Figure 42. Enable the SMTP listener task The next step is to set up and enable the ports for SMTP. The default TCP/IP port for SMTP is port 25. Use the administration function Server --> Current server document --> Ports --> Internet Ports --> Mail to enable the SMTP inbound and outbound ports. Lotus Domino for S/390—troubleshooting/hints/tips 97 Figure 43. Enable SMTP inbound and outbound ports Loading SMTP, you should now see two SMTP tasks running as shown in Figure 40 on page 95: the SMTP listener task and the SMTP control task. 2.4.5.3 Problems sending mail to the Internet We encountered a problem trying to send or receive mail to or from the Internet. In the noteslog there was the following entry: 0090 0090 0090 0090 0090 +WSC/DOMINO 28/05/99 11:56:27 SMTPMTA: oseshlr0 Attempting SMTP session with - 79 +WSC/DOMINO DE.IBM.COM - 23 +WSC/DOMINO 28/05/99 11:56:29 SMTPMTA: osesctl Outbound oseshlr0 SMTP session failed - 89 +WSC/DOMINO one or more messages.- 32 +WSC/DOMINO 28/05/99 11:56:31 SMTPMTA: osesctl Received message notification - 79 It was because of this error that we missed the NSInteraddr statement in the configuration file /etc/resolv.conf . This statement is used to define the IP address of a name server in dotted decimal format. 2.4.6 How mail routes in a Domino system These steps describe how mail routes in a Domino mail system: 1. A user creates and addresses a mail message to a recipient. 2. The user sends the message. 3. The user's client software: • Uses Notes protocols to deposit the message in the MAIL.BOX database on the user's Domino mail server. 98 Debugging UNIX Applications on OS/390 • Uses SMTP to send the message to the user's Domino mail server, which must be running the SMTP listener task. The SMTP listener task deposits the message in MAIL.BOX (Lotus Notes, IMAP clients, POP3 clients). • Uses HTTP to send the message to the user's Domino mail server, which must be running the HTTP task. The HTTP task deposits the message in MAIL.BOX (Web clients). 4. The Router finds the message in MAIL.BOX and determines where to send the message for each recipient. The Router calculates the next "hop" for the message on the path to its recipients and uses the best protocol, either SMTP or Notes routing, to transfer the message. • Using SMTP routing, the Router connects to the destination server—the recipient's mail server, a relay host, a smart host, or one of the servers in the recipient's Internet domain—and transfers a copy of the message. • Using Notes routing, the Router moves the message to the MAIL.BOX database on the server that is the next hop in the path to the recipient's mail server. The Router on that server moves the message to the next hop, until the message is deposited in the MAIL.BOX database on the recipient's home server. 5. The Router on the recipient's server finds the message (in MAIL.BOX on a Domino server) and delivers it to the recipient's mail file. 6. The recipient uses a client that supports Notes protocols, POP3, IMAP, or Web access (HTTP) to read the message, which is stored in the recipient's mail file. Note Starting with Domino Version 5 there is no longer a need to have an SMTP.BOX around. All mailing is handled using the MAIL.BOX. . Figure 44. Mail routing in a Domino environment Lotus Domino for S/390—troubleshooting/hints/tips 99 2.4.7 Transaction logging in Domino R5 Domino Release 5 supports transaction logging and recovery. With this feature enabled, the system captures database changes and writes them to the transaction log. Then if a system or media failure occurs, you can use the transaction log and a third-party backup utility to recover your databases. Note Transaction logging works with databases in Domino Release 5 format but not with databases that use formats from earlier releases. After you enable transaction logging, all databases in R5 format are automatically logged. To check database formats, use the Files tab of the Administrator. 2.4.7.1 What is transaction logging Transaction logging keeps a sequential record of every operation that occurs to data. If a database becomes corrupted, you can "roll back" the database to a point before it was corrupted and replay the changes from the transaction log. A single transaction is a series of changes made to a database on a server. Transaction logging provides three major benefits: • In most situations, you no longer need to run the Fixup task to recover databases following a system failure. Excluding Fixup results in quicker server restarts since Fixup must check every document in each database, while transaction log recovery applies or undoes only those transactions not written to disk at the time of the system failure. • Transaction logging saves processing time because it allows Domino to defer database updates to disk during periods of high server activity. Transactions are recorded sequentially in the log files, which is much quicker than database updates to random, nonsequential parts of a disk. Because the transactions are already recorded, Domino can safely defer database updates until a period of low server activity. • Using transaction logging simplifies your daily backup procedure. You can use a third-party backup utility to perform daily incremental backups of the transaction logs, rather than perform full database backups. Note Enabling transaction logging can improve server performance in most cases. Transaction logging saves processing time because it allows Domino to defer database updates to disk during high server activity. Transactions are recorded sequentially in the log files, which is much quicker than database updates to random, nonsequential parts of a disk. Because the transactions are already recorded, Domino can safely defer database updates until a period of low server activity. 100 Debugging UNIX Applications on OS/390 2.4.7.2 How to set up transaction logging 1. Ensure that all databases to be logged reside in the Domino data directory, either at the root or in subdirectories. 2. From the Administrator, click the Configuration tab. 3. In the "Use Directory on" field, choose the server's Domino Directory. 4. Click Server Configuration, and then click Current Server Document. 5. Click the Transactional Logging tab. 6. Complete these fields, and then save the document. Figure 45. Configuring transaction logging The following parameters will be added to your notes.ini file: Table 25. notes.ini parameters for transaction logging Variable name Description of the variable Example TRANSLOG_AutoFixup If set to on, Domino automatically runs Fixup if a database is corrupted and Domino cannot use the transaction log to recover. TRANSLOG_AutoFixup=1 TRANSLOG_MaxSize The maximum size, in MB, for the transaction log. A value of at least 192 MB is recommended. TRANSLOG_MaxSize=1000 Lotus Domino for S/390—troubleshooting/hints/tips 101 Variable name Description of the variable Example TRANSLOG_Path Path name location of the transaction log. The default path name is /logdir in the server's data directory. However, it is strongly recommended to store the transaction log on a separate device. If you change this field and have an existing transaction log, you must use the operating system to move all the log files to the new log path. TRANSLOG-Path=/u/hauff/translog TRANSLOG_Status Enables or disables transactional logging. TRANSLOG_Status=1 TRANSLOG_Style Describes if the log files will be reused and overwritten or not to be reused until they have been archived using a backup utility. TRANSLOG_Style=0 TRANSLOG_Performance This field controls how often Domino records a recovery checkpoint in the transaction log, which affects the server performance. TRANSLOG_Performance=2 TRANSLOG_UseAll Set to 1 = use all available space on the device for the transaction log. TRANSLOG_UseAll=0 2.4.7.3 How to fix corrupted databases Corrupted databases do not occur frequently when you use Release 5 databases and transaction logging. The server uses the transaction log to restore and recover databases after a system failure. Note You cannot use transaction logging on Release 4 databases. For these and other reasons, it is recommeded that you convert Release 4 databases to Release 5 and use transaction logging. 2.4.7.4 To disable transaction logging 1. Perform a full backup of all databases. 2. Edit the Transactional Logging field, and then save the Server document. 3. Restart the server so that the change takes effect. Domino runs restart recovery to ensure all databases are consistent, and then disables transaction logging. 2.4.7.5 FIXUP -J This parameter causes to run FIXUP on Release 5 databases that are enabled for transaction logging. Without this option, FIXUP generally does not run on logged databases. 102 Debugging UNIX Applications on OS/390 2.5 Troubleshooting documents In this section we describe how and what data to collect in case of a problem with several parts of the Lotus Domino Server for S/390. Lotus Domino S390 documentation especially Release Notes: Domino/Notes 5.0 (readme.nsf) and Domino Administration Help (help5_admin.nsf) in the .../notesdata/help directory also provide very helpful troubleshooting information. 2.5.1 HTTP This document provides a basic overview of the steps that Lotus Domino Support personnel uses to troubleshoot Domino 4.6x and 5.0 Web server (HTTP) crashes and hangs. It includes information for customers about the files required to troubleshoot such issues. 2.5.1.1 HTTP crash When troubleshooting crashes, several files are necessary to determine the cause. The HTTP task can crash for a number of different reasons. The first step is to ensure that HTTP is the crashing process. To accomplish this, Support personnel must review the nsd output (before and after the crash if the error is reproducible) and the notes log (log.nsf). Possible reasons for crashes • Agents or CGIs • Bad icons or images • Corrupted data • Unusual form properties, for example, controlled-access sections, hide-when formulas, etc. Troubleshooting crashes may include disabling any suspected agents or CGIs, performing database maintenance, rebuilding views, and other general measures. Support must gather diagnostics for every crash to determine the following: 1. What the server was doing when it crashed 2. What URL the server was processing at the time of the crash It is important to establish a pattern to the crashing URL, if indeed there is a pattern. Customers will be asked to provide (preferably in separate files or attachments) the following files for each and every crash. It will take a minimum of two to three occurrences to detect a pattern to the crash. Files to collect for every crash • NSD: Support will request the NSD output produced from the crash. • Domino logs: To help determine the flow of Web activity on the server, customers will be asked to enable Domino logging (Access/Referer/Error logs or DOMLOG.NSF) in the Server document to track URL hits during the crash period. For details on these logs refer to 2.3.4.2, “HTTP logs” on page 58. • Console output and/or LOG.NSF: Console output is preferred since this data is typically not buffered. In some cases, errors are shown only on the console. Customers will be asked to redirect console output using the DEBUG_OUTFILE parameter in the NOTES.INI. How to enable this parameter Lotus Domino for S/390—troubleshooting/hints/tips 103 is described in 2.5.8.1, “Implementing the DEBUG_OUTFILE parameter” on page 115. • NOTES.INI and Server document: This data is needed to determine if any abnormal HTTP settings are affecting the crash. 2.5.1.2 HTTP Hang HTTP hangs are more difficult to troubleshoot. More investigative work is required with HTTP hangs, and several iterations of data must take place to narrow down the problem. Possible reasons for hangs • CPU spin (due to excessive view rebuilds, corrupted views, or documents) • Excessive agent executions or agent hangs • Semaphore timeout issues • Network or port binding problems • Too much traffic on the server (as determined from Domino statistics) To troubleshoot the hang, Support must know the exact circumstances of the problem. First, Support determines if the server is truly in a hang state or is simply encountering performance problems that cause it to become unresponsive for a certain period of time. One way to determine whether the behavior is a performance slowdown or a true hang is to remove the load from the server and see if HTTP begins responding eventually, for example, after 5 to 10 minutes. This troubleshooting step may not always be feasible, but it will confirm whether the server has encountered a true hang state. If the server begins responding again, then the server has not actually hung but has experienced a performance slowdown. In such a case, Support troubleshoots this as a performance problem, not as a hang. Files to collect for every hang • Access log and/or DOMLOG.NSF • LOG.NSF and/or console output • NSD output Additional files that may be requested: • NOTES.INI and Server document • STATREP.NSF • Other operating-system level diagnostics HTTP Hangs due to agent hangs A majority of HTTP hangs are caused by a hang of a Web-triggered agent. There are three phases in troubleshooting an HTTP hang due to an agent: Phase 1: Determining if the hang is due to an agent Phase 2: Finding the originating thread/URL hang Phase 3: Determining the cause of the agent hang Phase 3 requires several iterations of debug for the agent in question. For troubleshooting agents, see 2.5.5, “Agents” on page 107. 104 Debugging UNIX Applications on OS/390 2.5.2 SMTP To get information about the SMTP server and client, the Notes log can be reviewed by searching for SMTP. To get more information about SMTP, add the debug parameter SMTPDEBUG to the notes.ini. Setting smtpdebug=1 forces minimal logging of the SMTP listener and smtpdebug=2 shows some additional debugging information as you can see in the following figure where a normal note transmission using Netscape Communicator to a Domino S390 server is shown: 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 PM PM PM PM PM PM PM PM SMTP Server [805306408:00004-671154179] State change from Greeting to Greeting SMTP Server [805306408:00004-671154179] Processing in Greeting state SMTP Server [805306408:00004-671154179] State change from Greeting to Connected SMTP Server [805306408:00004-671154179] Processing in Connected state SMTP Server [805306408:00004-671154179] EHLO command received SMTP Server [805306408:00004-671154179] Processing in Connected state SMTP Server [805306408:00004-671154179] MAIL command received SMTP Server [805306408:00004-671154179] Processing in Connected state 07/13/99 04:16:47 PM SMTP Server [805306408:00004-671154179] RCPT command received 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 07/13/99 04:16:47 PM PM PM PM PM PM PM SMTP Server [805306408:00004-671154179] Processing in Connected state SMTP Server [805306408:00004-671154179] DATA command received SMTP Server [805306408:00004-671154179] Processing in Connected state SMTP Server [805306408:00004-671154179] DATA command (cont.) SMTP Server [805306408:00004-671154179] Processing in Connected state SMTP Server [805306408:00004-671154179] QUIT command received SMTP Server [805306408:00004-671154179] State change from Connected to Terminal Note Before trying the preceding debug parameter, it is imperative that you discuss it with a Support Analyst beforehand. There may be issues surrounding its use, or special precautions that must be considered prior to debug parameter usage. Debug parameters may require a large amount of disk space, dependent upon when the server crashes, the number of users, and the number of databases that are opened on the server; the longer the server stays up, the larger the debug output will be. These files can grow large enough to cause disk space shortages. In case of configuration problems refer to 2.4.5, “The SMTP task” on page 96 for more information. 2.5.3 POP3 To get information about the POP3 server and client, the Notes log can be reviewed by searching for POP3. To get more information about POP3, add the debug parameter POP3DEBUG=1 to the notes.ini. This generates an output that can be seen either in the Notes log or on the administrator’s console. The following example shows the logon of a POP3 user named wpoppy—first with an invalid (wrong password), then with a valid attempt to log on to the server using Netscape Communicator: Lotus Domino for S/390—troubleshooting/hints/tips 105 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] Greeting state 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] AuthenticateUser state 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] AUTH command 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] NO AUTH PARAMETER! 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] AuthenticateUser state 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] USER command 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] AuthenticatePass state 07/13/99 02:01:05 PM POP3 Server: [855638046:00004-503382019] PASS command 07/13/99 02:01:05 PM POP3 Server: Authentication failure for wpoppy: Password not found in the Name and Address Book entry or password did not verify 07/13/99 02:01:11 PM POP3 Server: [855638046:00004-503382019] Terminal state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] Greeting state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] AuthenticateUser state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] USER command 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] AuthenticatePass state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] PASS command 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] mail/wpoppy.nsf is now open for exclusive access 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] STAT command 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:16 PM POP3 Server: [855638046:00004-503382019] LIST command 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] UIDL command 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] RETR command 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] Transaction state 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] QUIT command 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] Terminal state 07/13/99 02:01:18 PM POP3 Server: [855638046:00004-503382019] mail/wpoppy.nsf is closed for exclusive access Note Before trying the preceding debug parameter, it is imperative that you discuss it with a Support Analyst beforehand. There may be issues surrounding its use, or special precautions that must be considered prior to debug parameter usage. Debug parameters may require a large amount of disk space, dependent upon when the server crashes, the number of users, and the number of databases that are opened on the server; the longer the server stays up, the larger the debug output will be. These files can grow large enough to cause disk space shortages. In case of configuration problems refer to 2.4.4, “The POP3 task” on page 90 for more information. 2.5.4 Router To debug router problems, there is a parameter to be set in the notes.ini file, which may give you some help or ideas on the problem. debugrouter=0 (off,default), 1, 2 ,3 The most useful is debugrouter=3. This will display (in the log.nsf and on the console) how the router is building the routing tables, and from this you can determine the actual path taken. If you use the "set conf debugrouter=3" statement at the console, this variable will take effect immediately. To get 106 Debugging UNIX Applications on OS/390 information on how the table is being built, quit and reload the router. Figure 46 shows an example of this: > load router 07/16/99 01:02:25 PM Mail Router started for domain ITSO2 07/16/99 01:02:25 PM Router: Internet SMTP host domino4 in domain itso.ibm.com Server CN=DOMINO3/O=ITSO2 added to server table, tasks = 0001. Server CN=DOMINO4/O=ITSO2 added to server table, tasks = 0001. Server CN=TOT105/O=ITSO2 added to server table, tasks = 0001. Connection from CN=DOMINO3/O=ITSO2 to CN=TOT105/O=ITSO2 is Disabled Connection from CN=DOMINO3/O=ITSO2 to CN=TOT105/O=ITSO2 has a Cost = 1 and Tasks = 0001 Connection from CN=DOMINO4/O=ITSO2 to CN=TOT105/O=ITSO2 is Disabled Connection from CN=TOT105/O=ITSO2 to CN=DOMINO1/O=ITSO has a Cost = 1 and Tasks = 0001 Connection from CN=TOT105/O=ITSO2 to CN=DOMINO1/O=ITSO does not include Mail Rou ting Domain table is 0 segments (0 bytes) Rule table is 0 segments (0 bytes) Sorted Rules follow: SymList table is 0 segments (0 bytes) Server table is 1 segments (2048 bytes) Connection table is 1 segments (2048 bytes) Pull Connection table is 0 segments (0 bytes) Symbol table has 11 buckets (22660 bytes) Figure 46. Load router with variable DebugRouter set to 3 Here are some helpful commands to use in conjunction with the router: Table 26. Useful commands to control the router task Command Result Tell Router Delivery Stats Shows Router delivery statistics. Tell Router Compact Compacts MAIL.BOX and cleans up open Router queues. You can use this command to compact MAIL.BOX at any time. If more than one MAIL.BOX is configured for the server, each MAIL.BOX database will be compacted in sequence. Tell Router Show Queues Shows mail held in transfer queues to specific servers. Tell Router Exit / Quit Stops the Router task on a server. 2.5.5 Agents In this section we cover some troubleshooting items and possible pitfalls for Agents/Agent Manager. For more information on Agents and Agent Manager troubleshooting, see Domino Administration Help, Troubleshooting Agent manager and agents (help5_admin.nsf) in the .../notesdata/help directory. 2.5.5.1 Parameter Debug_AMgr Here are some parameter options that can be set in the notes.ini or dynamically using the console to ease Problem Determination. Lotus Domino for S/390—troubleshooting/hints/tips 107 Note Before trying the debug parameters listed below, it is imperative that you discuss them with a Support Analyst beforehand. There may be issues surrounding their use, or special precautions that must be considered prior to debug parameter usage. Debug parameters may require a large amount of disk space, dependent upon when the server crashes, the number of users and the number of databases that are opened on the server; the longer the server stays up, the larger the debug outfile will be. These files can grow large enough to cause disk space shortages. To debug agents in a database, you can add the following to your notes.ini: Log_Sessions=1 Log_AgentManager=1 Doppelganger=* For the Doppelganger parameter the following options are valid: Table 27. Doppelganger options Options Debug output * Turns on all following c Agent control parameters display l Agent loading event m Agent memory warning p Agent performance starts r Agent execution event s Agent scheduling event v Miscellaneous Take care with these parameters and keep in mind that they are not needed in most cases. The following output can be seen in the notes log if using option “*”: 108 Debugging UNIX Applications on OS/390 g g 07/12/99 03:51:17 PM AMgr: Daytime period is from '08:00:00 AM' to '08:00:00 PM' 07/12/99 03:51:17 PM AMgr: Nighttime period is from '08:00:00 PM' to '08:00:00 AM' 07/12/99 03:51:17 PM AMgr: Current control parameters in effect: 07/12/99 03:51:17 PM AMgr: Daily agent cache refresh is performed at '12:00:00 AM' 07/12/99 03:51:17 PM AMgr: Currently in Daytime period 07/12/99 03:51:17 PM AMgr: The maximum number of concurrently executing agents is '1' 07/12/99 03:51:17 PM AMgr: The maximum number of minutes a LotusScript/Java agent is allowed to run is '10' 07/12/99 03:51:17 PM AMgr: Private Agents ACL - all users may run private agents 07/12/99 03:51:17 PM AMgr: Restricted LS Agents ACL - select users may run LS agents with restricted access 07/12/99 03:51:17 PM AMgr: Unrestricted LS Agents ACL - select users may run LS agents with unrestricted access 07/12/99 03:51:17 PM AMgr: Searching 'discuss.nsf' for agent documents 07/12/99 03:51:17 PM AMgr: Agent 'Send Newsletters Send Newsletters' in 'discuss.nsf' is disabled 07/12/99 03:51:18 PM AMgr: Searching 'statmail.nsf' for agent documents 07/12/99 03:51:21 PM AMgr: Searching 'mail/wmichel.nsf' for agent documents 07/12/99 03:51:21 PM AMgr: Agent 'OutOfOffice OutOfOffice' in 'mail/wmichel.nsf' added as a scheduled task 07/12/99 03:51:21 PM AMgr: Agent 'OutOfOffice OutOfOffice' is scheduled to run next at: 07/12/99 03:45:00 PM 07/13/99 12:01:49 AM AMgr: Logging daily statistics for Manfred Hauff/Itso2 07/13/99 12:01:49 AM Total scheduled runs: 1 07/13/99 12:01:49 AM Total event triggered runs: 0 07/13/99 12:01:49 AM Total errors: 0 07/13/99 12:01:49 AM Total access denials: 0 07/13/99 12:01:49 AM Total agent elapsed run time (seconds) 0 07/13/99 12:01:49 AM AMgr: Logging daily statistics for Wilhelm Michel/Itso2 07/13/99 12:01:49 AM Total scheduled runs: 3 07/13/99 12:01:49 AM Total event triggered runs: 0 07/13/99 12:01:49 AM Total errors: 0 07/13/99 12:01:49 AM Total access denials: 0 07/13/99 12:01:49 AM Total agent elapsed run time (seconds) 1 07/13/99 12:01:49 AM AMgr: Total daily statistics 07/13/99 12:01:49 AM Total scheduled runs performed: 5 07/13/99 12:01:49 AM Total event triggered runs: 0 07/13/99 12:01:49 AM Total unsuccessful runs: 0 07/13/99 12:01:49 AM Total access denied runs: 2 07/13/99 12:01:49 AM Total agent elapsed run time (seconds) 1 The output in the the previous figure can be seen on the administrator’s console additionally. 2.5.5.2 Agent log To get a quick idea what happens at an agent’s execution time, you can also have a look at the agent log by selecting Agent --> Log on the action bar of a database’s Agents view. See Figure 47 on page 110 (example log for the Out Of Office agent): Lotus Domino for S/390—troubleshooting/hints/tips 109 Figure 47. Agent log 2.5.5.3 Debugging at the server console - tell commands This section describes the tell commands you can use with Agent Manager. Tell Meagre Pause Pauses scheduling of agents. Tell Meagre Resume Resumes scheduling of agents. Tell Meagre Schedule Shows the schedule for all agents scheduled to run for the current day. In addition, the command shows the agent trigger type, the time the agent is scheduled to run, the name of the agent, and the name of the database on which the database runs. Checking the Agent Manager schedule lets you see if an agent is waiting in one of the Agent Manager queues. Agent Manager queues: • E—Agents eligible to run • S—Agents scheduled to run • V—Event-triggered agents waiting for their events to occur Trigger types: • S—Agent is scheduled to run • M—Agent is a new mail-triggered agent • U—Agent is a new/updated document-triggered agent Tell Meagre Status This command shows a snapshot of the Agent Manager queues and displays the Agent Manager settings in the Server document. 110 Debugging UNIX Applications on OS/390 > tell amgr status > 07/14/99 04:43:07 PM AMgr: Status report at '07/14/99 04:43:07 PM' 07/14/99 04:43:07 PM Agent Manager has been running since '07/14/99 02:51:20 PM' 07/14/99 04:43:07 PM There are currently '1' Agent Executives running 07/14/99 04:43:07 PM There are currently '0' agents in the Scheduled Task Queue 07/14/99 04:43:07 PM There are currently '0' agents in the Eligible Queue 07/14/99 04:43:07 PM There are currently '0' databases containing agents triggered by new mail 07/14/99 04:43:07 PM There are currently '0' agents in the New Mail Event Queue 07/14/99 04:43:07 PM There are currently '0' databases containing agents triggered by document updates 07/14/99 04:43:07 PM There are currently '0' agents in the Document Update Event Queue 07/14/99 04:43:07 PM AMgr: Current control parameters in effect: 07/14/99 04:43:07 PM AMgr: Daily agent cache refresh is performed at '12:00:00 AM' 07/14/99 04:43:07 PM AMgr: Currently in Daytime period 07/14/99 04:43:07 PM AMgr: The maximum number of concurrently executing agents is '1' 07/14/99 04:43:07 PM AMgr: The maximum number of minutes a LotusScript/Java agent is allowed to run is '10' 07/14/99 04:43:07 PM AMgr: Executive '1', total agent runs: 2 07/14/99 04:43:07 PM AMgr: Executive '1', total elapsed run time: 2 2.5.6 Calendaring/Scheduling In this section we cover some troubleshooting items and possible pitfalls for Calendaring and Scheduling. More information about this item (in Domino R5) can be found in the Release Notes: Domino/Notes 5.0 Troubleshooting Client/Server - Calendar and Scheduling Issues (readme.nsf) and Domino Administration Help, Troubleshooting Agent manager and agents (help5_admin.nsf) in the.../intestate/help directory. 2.5.6.1 Schedule Manager errors The Schedule Manager errors in the Notes log file report information about certain databases that may have a mismatch of a certain field in a calendar entry, with respect to the name that is listed in the Busytime.nsf file and the Public Name & Address Book (NAB). This does not necessarily mean that the Calendaring & Scheduling system is not working. Here are the most common error messages and possible solutions: •“SchedMgr: Error processing calendar profile document (NoteID: NT00xxxxxx) in database xx.nsf: Appointment record not found" The appointment record or resource/room in the Resource Reservation database has been deleted. This issue has been reported to Lotus Quality Engineering. •"Can't Find User in Name and Address Book" The $BusyName in the Note ID does not exist in the NAB for some reason. Usually the user actually left the company and physically does not exist in the Public NAB any longer. Lotus Domino for S/390—troubleshooting/hints/tips 111 This can happen if an administrator deleted a user from the Public Address Book and did not choose to delete the mail file. AdminP will remove the person document but not the mail file. When the server is started it finds the mail file, but there is no person document associated with it. Removing the mail file fixes the problem. •"SchedMgr: Error processing appointment document (NoteID: NTxxxxxx) in database mail\xx.nsf: Can't find appointment end time" A reminder was created; reminders do not contain an end time. •"SchedMgr: Error processing appointment document: Can't find appointment start time" First, make sure that the user name in the Calendar Profile matches the user's name in the public NAB. If not, check the All Documents view in the mail file for the Calendar and Delegation Profile documents. These two documents should show in the view as draft documents with no subject and no author. Once these are found and identified they can be deleted. Once these documents are deleted, restart the server and the error should not occur again. 2.5.6.2 Daylight Saving Time Some geographic regions observe Daylight Saving Time (DST). This means that twice a year (normally in March and October) the clocks have to be changed, gaining or losing an hour. Due to the current observance of differing DST settings within users' configurations, some users are experiencing issues where Notes appointments and events are appearing off by an hour. This document describes the settings that should be implemented to address these issues. If you work in a region that uses Daylight Saving Time, you should enable both Notes and your operating system's Daylight Saving Time settings. Certain regions do not observe DST, and if you work in one of these regions you should not have Daylight Saving Time observed in either Notes or your operating system. Note: The settings are relevant to both Notes clients and servers. Notes needs to know when the Daylight Saving Time should be handled. Prior to Notes Releases 4.5.4 and 4.6.1 (including all localized versions), Notes used the North American rule to enable the change to Daylight Saving Time, which is: - the first Sunday of April and the last Sunday of October Starting with 4.5.4 and 4.6.1, the international English version will by default use the most common European rule, which is: - the last Sunday of March and the last Sunday of October You still have the opportunity to change the hardcoded rule and define your own settings by specifying the DSTLAW variable in the NOTES.INI. For North American versions, DSTLAW=4 1 1 10 -1 1, whereas the international versions use DSTLAW=3 -1 1 10 -1 1 (see the following explanation). 3 = 3rd month -1 = last week of the month 112 Debugging UNIX Applications on OS/390 1 = first day of the weekfirst 10 = 10th month -1 = last week of the month 1 = first day of the weekfirst 2.5.6.3 Debugging at the server console - tell commands Here are tell commands you can use with Schedule Manager. Tell Sched Stats Displays totals of reservations and appointments in the Free Time database. > tell sched stats > 07/14/99 03:30:07 PM SchedMgr: wilhelm michel/itso2 has 2 appointment(s) 07/14/99 03:30:07 PM SchedMgr: manfred hauff/itso2 has 3 appointment(s) 07/14/99 03:30:07 PM SchedMgr: Total of 2 user(s) with a total of 5 appointment(s) 07/14/99 03:30:07 PM SchedMgr: Total of 0 resource(s) with a total of 0 reservation(s) 07/14/99 03:30:07 PM SchedMgr: Total of 2 users/resources with a total of 5 appts/reservations Tell Sched Show username Displays the specified user's schedule on the server console. Use this command to investigate problems in the Free Time database. Tell Sched Validate Immediately validates a Free Time database on a server. Validation occurs by default at 2:00 A.M.; however, you can use this command to force it to occur sooner. Another way to force validation is to stop and restart the Schedule Manager. Validation can take some time. You must issue this command at all servers where mail files have been removed and/or added to ensure that old free time information is removed and new free time information is added to the free time database on the server. Do not use this command when you add new users. The administration process creates person documents for users in the Domino directory before creating their mail file on their mail server. Schedule Manager watches for database creations and automatically picks up new users' mail files. Tell Sched Validate username Validates the information for the specified user. This command is faster than using the Tell Sched Validate command because it allows you to validate individual users, rather than validating all of the data on a server. Lotus Domino for S/390—troubleshooting/hints/tips 113 2.5.7 Common info/data needed by support personnel in case of errors Following is data and information that is important in case of problems with the Domino Server on S390. 2.5.7.1 Common questions • What version of OS/390 is used? • What version of TCP/IP is installed? • What patches are installed? • Have the system files been modified? 2.5.7.2 Files and information to obtain prior to opening a problem Further information: Detailed description of the problem • Problem symptoms • What changed? • Can it be recreated? • Severity Were all PREREQs met? • IEASYSxx • BPXPRMxx • Required PTF list • Required Software/Hardware (OS/390 version, TCP/IP, C++ class library, Security product, etc.) How was the server started? • Telnet/rlogin session using non-superuser ID • Foreground • Background (rc.notes) • DOMCOM (not officially supported) • See DOMCOM discussion database • TSO OMVS shell (not supported) Log files • log.nsf, notes.log, stats database, http logs (access-log.*, error-log.*, agent_log.*, referer_log.*) • MVS Operator's console • SYS1.LOGREC • Any CEEDUMPs created in /notesdata • Are the sticky bits turned on for the executables (for example, running out of linklist, LPA, or steplib)? 114 Debugging UNIX Applications on OS/390 Troubleshooting aids 1. Run nsd.sh as Notes Server Account in the Notes data directory. See 2.2.1, “nsd.sh” on page 45 for information on how to handle this script. 2. Collect show stat, show tasks, show users, show tasks debug, show user debug. 3. Collect statrep.nsf to show load over a week's time. 4. In the NOTES.INI file, implement setting log_sessions=1 and server_show_performance=1 (see 2.5.8.2, “Performance events using console” on page 116). 5. Do the stats show semaphore timeouts? 6. Is the server a mail server, database server, hub, or general purpose server? 7. Is a CEEDdump file created at the time of the crash? If so, obtain the file. 8. Does the log report an error, a panic, or fatal error? If not, is the Notes server running in the foreground? 9. If the Notes server is not running in the foreground, is it already logging output to a file? If so, panic or fatal error may be recorded at the end of the output file. If not, ask to run in the foreground to capture the next crash or start with an output file. 10. If there are no errors, panics, or fatal errors in the Notes log or output log, this suggests a protocol problem or a performance issue. 11. If "Server is Not Responding" is generated on the clients, can commands be issued at the server console? 12. Is it a specific database, a database view, or a user that causes the crash? 2.5.8 More troubleshooting information Here are other troubleshooting items. 2.5.8.1 Implementing the DEBUG_OUTFILE parameter You are experiencing a server crash and would like to implement the DEBUG_OUTFILE=<filename> NOTES.INI parameter and have the following questions: • How should it be implemented? • Where should the debug file location point on the hard drive? • What happens when the location of the log file runs out of disk space? Does this cause a server or operating system crash? The first step in implementing this parameter is to add an entry to the NOTES.INI file, as in the following example: DEBUG_OUTFILE=/debuglog/debug.txt Note Before implementing the parameter, read this document completely. Once the DEBUG_OUTFILE parameter has been added to the NOTES.INI file, the Domino Server must be shut down and restarted, for the logging to begin. Lotus Domino for S/390—troubleshooting/hints/tips 115 It does not matter what location the log file is placed; however, it is strongly recommended that the DEBUG_OUTFILE parameter be configured to save the LOG file in a location that is isolated from a directory where the operating system, Domino Server, and other applications may potentially create files that are necessary for those programs to function correctly. The reason for this is that the LOG file is created on a partition where vital applications are running, and the LOG file fills the hard drive/file system to its capacity, which may result in a system crash. This crash may occur in any running application(s) that use that file system. Placing it on an isolated HFS file avoids any of these potential problems. When the log file is placed in an isolated HFS not being used by any currently running applications and then space problems take place, the Domino Server will stop logging to the file specified in the DEBUG_OUTFILE parameter. With no disk space to write to the log file, the Domino Server's overall performance is not affected and continues to function. Be aware that this log file may grow significantly in size over a period of time on a Domino Server that has a high rate of activity. One example of this was on a busy system that was running over a five day period with the DEBUG_OUTFILE parameter enabled. The log grew to a size of 125 MB. Again, the size that the log file will grow to depends on the activity rate of that server. The log file cannot be deleted while the Domino Server is running. If an attempt is made to delete the file, a sharing violation will occur. 2.5.8.2 Performance events using console How can performance events be routed to the server console? To display server performance events to the server console, type the following command: SHOW PERFORMANCE This will set the NOTES.INI Server_Show_Performance parameter to a value of 1. If the NOTES.INI Server_Show_Performance parameter value is set to 0, server performance events will be displayed in Notes Log. To stop server performance events from being displayed on the console type SHOW PERFORMANCE again and performance events will no longer be displayed on the console. On the Server Console the concurrent transactions will display as shown below: > show performance 07/15/99 04:05:23 PM SERVER_SHOW_PERFORMANCE changed to 1. Server Performance Monitoring is now enabled. > 07/15/99 04:05:41 PM 12 Transactions/Minute, 5 Users > show performance 07/15/99 04:05:50 PM SERVER_SHOW_PERFORMANCE changed to 0. Server Performance Monitoring is now disabled. > 116 Debugging UNIX Applications on OS/390 2.5.8.3 Lotus Domino’s helpful troubleshooting documentation To get more information on troubleshooting for all areas in the Lotus Domino S390 server, there are two very helpful databases that are delivered with the product and can usually be found in the .../notesdata directory. Release Notes This is database readme.nsf. Figure 48. readme.nsf Lotus Domino for S/390—troubleshooting/hints/tips 117 Domino 5 Administration Help This is database help5_admin.nsf. Figure 49. help5_admin.nsf 2.6 Information sources This section shows very complete lists about APARs, books, and sites with additional information about Lotus Domino for S/390. 2.6.1 Required APARs and PTFs Information about APARs and PTFs needed for Lotus Domino S/390 are listed at http://www.s390.ibm.com/products/domino/domptf.html 118 Debugging UNIX Applications on OS/390 Figure 50. APARs and PTFs needed for Domino S390 2.6.2 Web sites More information about related IBM and Lotus products can be found at the following Web sites: • The IBM Homepage: http://www.ibm.com • The Lotus Homepage: http://www.lotus.com • Domino and Notes document library: http://www.notes.net/notesua.nsf • Domcon download page: http://www.s390.ibm.com/products/domino/domcon/dmcndl.html • The UNIX System Services Page: http://www.s390.ibm.com/unix Lotus Domino for S/390—troubleshooting/hints/tips 119 Figure 51. UNIX System Services (USS) site • The Domino R5 home page: http://www.lotus.com/home.nsf/welcome/r5home Figure 52. Domino R5 home page 120 Debugging UNIX Applications on OS/390 • The Domino tools zone: http://www.lotus.com/home.nsf/welcome/dominotools Figure 53. Domino tools • Lotus Domino for S/390 - Tools for Developers: http://www.s390.ibm.com/products/domino/domdown.html Figure 54. Lotus Domino - Tools for Developers Lotus Domino for S/390—troubleshooting/hints/tips 121 • UNIX System Services documentation: http://www.s390.ibm.com/oe/bpxa1pub.html Figure 55. UNIX System Services library 2.6.3 Redbooks To see all available redbooks for Lotus Domino for S/390, simply open the Internet site http://www.redbooks.ibm.com and search for "domino": 122 Debugging UNIX Applications on OS/390 Figure 56. Redbooks 2.6.4 Other information sources Here is additional information. 2.6.4.1 Lotus Domino documentation The Domino Server documentation delivered on the installation CD contains some very useful help databases such as: Figure 57. Lotus Domino R5 help documentation These databases are usually installed to the .../notesdata/help directory. If HTTP is enabled on your server, the help documentation can also easily be accessed using any Internet browser by simply selecting the server name or IP-Adress (default) as shown in Figure 58 on page 124: Lotus Domino for S/390—troubleshooting/hints/tips 123 Figure 58. Lotus Domino R5 documentation using an Internet/intranet browser 2.6.4.2 How to debug in OS/390 • OS/390 MVS Interactive Problem Control System (IPCS) Commands, GC28-1754 This book presents, in alphabetical order, the IPCS commands, subcommands, and dialog commands. It provides reference information about using the Interactive Problem Control System and gives examples and output generated by the commands. This book is intended for system programmers who diagnose problems and debug dumps on OS/390. • OS/390 MVS Diagnosis: Tools and Service Aids, SY28-1085 The tools and service aids described in this book are designed to help in identifying the symptoms of the problem, gathering relevant data from system data areas to isolate the problem to the component level, and analyzing the component to determine the cause of the problem. This publication explains how, why, and when to use IBM tools and service aids programs. 124 Debugging UNIX Applications on OS/390 Chapter 3. Novell Network Services This chapter has information about the product Novell Network Services (NNS) for OS/390, which features NetWare Directory Services (NDS). It is also called NNS for OS/390. This is the first release of the product. By hosting NDS and other applications on S/390, you get all the classic strengths that have made S/390 the defining standard in enterprise computing. The high availability of S/390 is the result of many years of refinement and this kind of availability is not easily achieved. Specific S/390 hardware has been designed over the years to assist the operating system and application subsystems to create a highly reliable and serviceable system. 3.1 Benefits Directory Services is one of the most critical components of your network, and you want to make it as reliable as possible, so it should be deployed on the most reliable enterprise server. By running NDS on an S/390 rather than multiple instances on smaller platforms, you can enhance productivity and help lower network administration costs. NDS for OS/390 provides a compatible implementation of NDS Version 4.10b across your enterprise in a way that is transparent to users and administrators. For existing NDS environments, Novell Network Services for OS/390 provides a seamless migration toward a consolidated directory infrastructure with minimal disruption, while leveraging your current NetWare TM administration skills and your S/390 infrastructure. Other Novell Network Services for OS/390 benefits can include: • Reduction/consolidation of NDS servers • Support for NetWare-IP in addition to IPX/SPX • No client change required • Support for NDS read/write replication and synchronization across multiple servers or partitions • Reduction in total cost of ownership • NetWare Administrator (NWAdmin) providing a single point of administration through icon-oriented management, which can reduce administration costs. 3.1.1 NDS and NDS practices This section gives a brief tutorial on NDS and NDS practices. In case you are not familiar with NDS practices, here is a quick tutorial on Novell's and customers' recommendations, based on actual experiences. There probably is one NDS tree for the entire enterprise. This tree then is subdivided into partitions, for example, maybe one partition per geographical site or one per product division or any other meaningful administrative subdivision. Neither the tree nor the partitions physically exist in a file or a data set. They are logical descriptions, kind of like high-level qualifiers. Contained in each of these partitions are NDS objects. Objects are used to describe every entity that you © Copyright IBM Corp. 1999 125 administer with NDS. For example, a user is an object, a server is an object, as is a printer or a program or a data volume, etc. Objects that belong together are associated with each other, common objects can be managed as groups to ease administration, permissions are defined to control access, etc. These are the tasks of the LAN administrators, and their results are stored in what is called NDS replicas. These are replicas of the partitions. They are physical files on NetWare servers, and for availability and disaster-recovery purposes, it is recommended that there always be three replicas per partition. And, to prevent clogging up the network with NDS traffic it is recommended that there be no more than three replicas per partition. It also turns out that based on actual experience more than three replicas is unnecessarily redundant. One last bit of information is the administrator updates what is called the master replica. The NDS program then automatically propagates every change to the master replica to both of the read/write replicas, and what makes NDS so efficient is NDS propagates only the changes, not the entire replica. The collection of all the replicas is called the NDS Database. In practice, the NDS databases do not need to dedicate NetWare servers to function solely as "NDS Servers", but rather share one of the production NetWare file/print/application servers. This is in sharp contrast to Windows NT Domains where Windows NT Servers (in practice, never fewer than three, and almost always many more) are dedicated to doing only Domain data storage and processing. This distinction is more apparent in the following paragraphs, because it will open up an opportunity to eliminate Windows NT Domain Servers without requiring you to install NetWare on any LAN servers. 3.1.2 Uses of NNS for OS/390 This section mentions some suggested uses of this first release of NNS on OS/390 and its advantages. • Store one of the read/write replicas of each of your NDS partitions on OS/390, rather than on another NetWare server, thus, making OS/390 the master repository of your entire NDS structure. • This then provides a highly reliable storage and a full-function data management system for this most important portion of your LAN environment. It also brings to this LAN data the full power of OS/390 data recovery and disaster recovery tools and disciplines, and probably more importantly total confidence that your NDS data can always be recovered should that ever be necessary. Full confidence in recovering backed up LAN data is a serious shortcoming of today's LAN data management tools. Also, your company's NDS data will now get the full protection of your long-proven mainframe disaster-recovery discipline and practices, something which normally is not possible with most LAN disaster-recovery plans. • Eliminate some of your Windows NT Domain Controllers without having to install NetWare on any LAN server. • Prior to NDS for OS/390, to replace Windows NT Domains with NDS a customer would have to install a NetWare LAN Server. This is objectionable to some customers even though they recognize the superiority of NDS over Windows NT Domains. This migration from Domains to NDS now can be accomplished with NNS for OS/390 without having to install NetWare on any LAN servers. 126 Debugging UNIX Applications on OS/390 3.2 Introduction Novell Network Services for OS/390 is a Novell Directory Services (NDS) server based on Novell Cross-Platform Services 4.10b (NCPS). This product provides support for: • Client for DOS/WIN (VLMs) Version 1.21 or above • Client 32 for DOS and Windows 3.1x Version 2.11 • Client 32 for Windows 95 Version 2.11 • Client 32 for Windows NT Version 1.0 • WIN-95 Client, distributed as msnds.exe • WIN-NT 4.0 NetWare Client and Gateway Only the Ethernet network is supported. 3.2.1 The structure of NNS This section illustrates the overall architecture of Novell Network Services. On a host operating system, it runs as a series of drivers and application programs. These modules divide into two packages: transports and services. Figure 59 illustrates the major modules of these two packages; the NetWare services are shown in the upper right-hand corner. Figure 59. Structure of NNS Novell Network Services 127 The ovals represent user-space processes. The rectangles represent kernel drivers. The lines represent the significant paths of communication and are not meant to be inclusive. The resources under the bottom dashed line indicate some of the host system modules that the Novell Network Services server depends on. Novell Network Services has three controlling daemons: • NetWare/IP (NWIP) daemon—controlling daemon for the NetWare/IP stack • NetWare Protocol STACK (NPS) daemon—the controlling daemon for the NetWare transports • NetWare daemon—the controlling daemon for the NetWare services The NetWare transport modules can run independently of NetWare services. 3.2.2 Features of NNS 3.2.2.1 Novell Directory Services (NDS) Novell Directory Services provides a global naming service that is distributed across the entire NetWare network with a single point of administration. NetWare users log into the Directory tree and, with appropriate rights, have access to any resource on the network, regardless of physical location. NDS provides: • Distributed information service that stores many types of data • Scalability and reliability provided by its ability to be partitioned and replicated • X.500 modeling • Access services through the use of Access Control List (ACL) • An extensible schema, enabling an application developer to customize the information contained in the Directory 3.2.2.2 Client support and utilities Allows workstations running DOS, Windows, Windows 95, or Windows NT to log in to the NetWare server and share network resources. Novell Network Services provides each client type with a set of NetWare utilities that allow users to configure their NetWare environment and to manage some aspects of the NetWare server. 3.2.2.3 Account security Provides secure NDS authentication with private key/public key encryption login restrictions. 3.2.2.4 SANDS and SCALE server operating modes Novell Network Services servers can operate in either of two modes: Stand-alone NDS (SANDS) or SCALE. In the SANDS mode, a single NDS server provides most of the required NDS functions, such as ACLs, Authentication Time Synchronization, and Bindery Emulation and Schemes. It lacks the function that allows NDS to be a global, distributed, and replicated directory. A SANDS server is the only server in a tree but still visible to all other NDS servers. A SCALE server includes the functions of SANDS server and also Partition Management, Replication, and Synchronization with other servers or trees outside its tree. 128 Debugging UNIX Applications on OS/390 3.2.3 NNS functions • Customer support for central and hierarchical management of users, groups, networks, security, and applications • NetWare/IP support in addition to IPX support • No Front End Processor (FEP) required • Acts as NDS server for NetWare PC clients/browsers • Acts as router for other servers • Transparent to administrators and users • Clients supported: Windows 95, Windows 98, Windows NT, DOS32 • Frame types supported: Ethernet 802.2, Ethernet II, Ethernet Snap - Need router to support other LAN/frame types The IPX protocol is the communication method between clients and servers in a Novell network. IPX can travel directly on the wire or it can be encapsulated with TCP/IP. The latter is known as NetWare/IP. Novell Network Services supports both communication methods. • NetWare/IP requires Domain Name Service (DNS). It also requires Domain SAP/RIP service (DSS). DNS and DSS are not included in Novell Network Services. NetWare/IP requires its own domain. • IPX requires at least one Fast Ethernet OSA-2 (FENET OSA-2) installed on the system. Fast Ethernet OSA-2 supports Ethernet II, Ethernet 802.2 and Ethernet SNAP frame types. Multiple OS/390 images can share the same card. 3.2.4 Licensing system The license for NDS is included with NNS for OS/390. It includes full SCALE functionality and limited client login capability. 3.2.5 NNS networking Figure 60 on page 130 shows an example of NNS networking using a single OSA card that can support multiple OS/390 systems in an LPAR environment: Novell Network Services 129 Figure 60. NNS networking 3.3 Installation and customization This section has information about how NNS on OS/390 is installed and customized. The NNS product was installed on an OS/390 V2R7 system for this installation. After NNS for OS/390 has been installed using SMP/E, update parmlib on the target system with the following changes: • Add library SINRLMOD to the appropriate LNKLSTxx member. • Add library SINRLMOD to the appropriate PROGxx member to APF-authorize the library. • Update the BPXPRMxx parmlib member to add a FILESYSTYPE statement for STREAMS. For more important information see the PROGRAM DIRECTORY of NNS for OS/390 regarding the FMIDs HNWS110 and JBB6616, for Program Number 5655-B12 and with Document Number GI10-0632. For more information see Novell Network Services for OS/390 Installation, GA22-7312. 130 Debugging UNIX Applications on OS/390 3.3.1 Software requirements This section describes the software requirements of NNS. • OS/390 V2R6 (FMID HBB6606) or a later release /Component ID 564701NWS - OS/390 2.6.0 BCP APAR OW34660 - USS UNIX System Services (FMID HOT1180) with APAR OW34480 or higher - If OSA-2 feature used, require OSA/SF V1R2 (FMID H0G1200) with APAR OW33393 - RACF Security Server feature enabled Figure 61 shows the entry in the IFAPRDxx parmlib member to enable the RACF Security Server feature: PRODUCT OWNER('IBM CORP') NAME(OS/390) ID(5647-A01) VERSION(*) RELEASE(*) MOD(*) FEATURENAME('SECURITY SERVER') STATE(ENABLED) Figure 61. IFAPRDxx parmlib member • HFS requirements - Minimum size 4.492 tracks on 3390 to install Note If you are installing NNS for OS/390 on OS/390 V2R7 system (or higher release) target system, remove FMIDJBB6616 from the APPLY job. Do not install FMID JBB6616 since FMIDJBB16 is superseded and deleted by OS/390 V2R7 BCP. If you are installing NNS for OS/390 on an OS/390 V2R6 target system, you must install both FMIDs HNWS110 and JBB6616. 3.3.2 Hardware requirements In this section we describe the hardware requirements of NNS. • S/390 G2 or newer class processor if running NWIP; S/390 G3 or newer processor if running IPX • OSA2 Fast Ethernet card (using IPX) 3.4 Customization In this section we describe about how to customize NNS for OS/390. Ensure that the sample job INRISMKD has created the HFS directories for NNS. Set up the UNIX System Services (USS) environment for NNS, see 3.4.1, “UNIX System Services environment” on page 132 and IPL the system. Novell Network Services 131 3.4.1 UNIX System Services environment 3.4.1.1 NNS volumes This section informs you of the volume definitions that must be done related to HFS. For Novell Network Services to function, the SYS volume must be installed and mounted in the HFS data set as /etc/netware/vol. Its control directory is also kept in that same directory. The size of the SYS volume should be 100 MB as a minimum and is limited to 120 MB. The /etc/netware/vol directory must be mounted as a separate HFS. No additional volumes are allowed. The PUBLIC and LOGIN directories can be populated with utilities to allow clients to access the server. These utilities and associated files are installed in the /usr/lpp/netware/SYS directory and can be copied to the /etc/netware/vol/SYS directory if it is desired to make them available to clients. OS/390 UNIX System Services Planning describes the process for allocating and mounting an HFS data set. A brief example is shown here to illustrate one way to allocate and mount an HFS data set to use as a SYS volume: ALLOCATE DATASET('OMVS.NWSYS.HFS') DSNTYPE(HFS) SPACE(150,0) DIR(1) CYL FREE DATASET('OMVS.NWSYS.HFS') MOUNT FILESYSTEM('OMVS.NWSYS.HFS') TYPE(HFS) MOUNTPOINT('/etc/netware/vol') To store data objects, configuration information, etc., an additional HFS data set must be allocated. The calculation for space required depends on the size of the customer tree. We recommend a minimum size of 200 CYL. This volume must be installed and mounted in the HFS data set as /etc/netware. A brief example is shown here to illustrate one way to allocate and mount an HFS data set to be used as a volume to store data objects, configuration information, etc. ALLOCATE DATASET('OMVS.NW.HFS') DSNTYPE(HFS) SPACE(200,0) DIR(1) CYL FREE DATASET('OMVS.NW.HFS') MOUNT FILESYSTEM('OMVS.NW.HFS') TYPE(HFS) MOUNTPOINT('/etc/netware') Recommendation: Issue the MOUNT commands in the USS ISHELL to get a better explanation in case of a failure. But this mount is only valid till the next IPL. Thus, also define the MOUNTs to the BPXPRMxx parmlib member to mount both volumes as HFS data sets automatically. 3.4.1.2 STREAMS considerations Novell Network Services requires STREAMS support in the OS/390 UNIX kernel. STREAMS runs as a physical file system (PFS) inside the kernel. It is started with 132 Debugging UNIX Applications on OS/390 a FILESYSTYPE statement in the BPXPRMxx member. Note that the change will not take effect until the next system IPL. Note It is in progress to change the FILESYSTYPE related values dynamically also. See OS/390 Release 8 or 9. An example of this statement is: FILESYSTYPE TYPE(STREAMS) ENTRYPOINT(BPXTNSTR) PARM('-m INRKMAP -h 1000') The values for the operands are as follows: • TYPE must be STREAMS • ENTRYPOINT must be BPXTNSTR PARM is a quoted string of options. Unless otherwise specified, if multiple options are specified, only the last is used. The options are: —m (mapname) Is the name of a load module that contains the device and module information for a set of device drivers to be loaded. To load the Novell Network Services required STREAMS modules, use INRKMAP as the map name. Note Ensure that the following message is shown in the SYSLOG to indicate that the STREAMS support is available: BPXTN005I STREAMS module map INRKMAP loaded —h (high_storage) Specifies the maximum amount of storage allocated for STREAMS message blocks. This number is specified in units of kilobytes. Default: —h 280 —t (trace_opt) Specifies the type of trace to enable. Multiple —t options can be specified. In addition to this specification, SYSOMVS CTRACE must be enabled for character special for the tracing to occur. Default: —t normal. off Disable tracing. all Enable all trace types. code or nocode Enable/disable tracing for internally coded traces. proc or noproc Enable/disable tracing for procedure entry and exit. normal or nonormal Enable/disable tracing for code and procedure. Novell Network Services 133 diag or nodiag Enable/disable tracing for internal debugging. data or nodata Enable/disable tracing for message block data content nw or nonw Enable/disable tracing for NetWare device tracing. 3.4.1.3 User IDs required Novell Network Services requires special OS/390 user IDs and groups to store files and NDS objects in the file system. Novell Network Services uses NDS to control access to the NetWare data. It uses these user IDs to store the NetWare data on OS/390. The required user IDs and groups are NWROOT, NWUSER, NOBODY, NWGROUP, and NOGROUP. Use the following sample statements to create these definitions from a TSO session: • ADDUSER NWROOT OMVS(UID(0)) • ADDUSER NWUSER OMVS(UID(0)) • ADDUSER NOBODY OMVS(UID(0)) • ADDGROUP NWGROUP OMVS(GID(0)) • ADDGROUP NOGROUP OMVS(GID(0)) Recommendation: Ensure through the RACF LU and LG commands that the users and groups are defined. An example is: LU (NWROOT) OMVS LG (NWGROUP) OMVS 3.4.2 Environment variables Novell Network Services uses the NLSPATH shell environment variable to access the message catalog directory. The directory that holds the message catalogs must be added to the NLSPATH shell variable. For example, the following command would add the Novell Network Services path to the NLSPATH environment variable: • export NLSPATH=$NLSPATH:/usr/lpp/netware/nls/msg/%L/%N Use the PATH environment variable to define the default command path. The command directory, /usr/lpp/netware/bin, can be added to the PATH environment variable. For example: • export PATH=$PATH:/usr/lpp/netware/bin Recommendation: Add both PATH commands to your profile because they are only valid for the actual ISHELL session. For more information see, “Server installation” on page 148. See OS/390 UNIX System Services Planning, SC28-1890, for more information about SHELL environment variables. 134 Debugging UNIX Applications on OS/390 3.4.3 Network configuration This section describes how to set up the network using the OSA2 configuration for IPX and to set up the network using NetWare/IP. Novell Network Services can be configured with as many FENET OSA-2 interfaces as can be installed on a system. If more than one is used, then in addition to routing packets to the server, Novell Network Services will also route IPX packets between the networks attached to each FENET OSA-2. The configuration information required to make this work is: • OSA Name—This is an 8-character name that must be in the format INRT11nn where nn is a two-digit decimal number within the range 00 to 99. • Device Numbers—Use these hardware numbers associated with the FENET OSA-2 to identify the communication path between VTAM and the hardware. Only one pair of device numbers is required for each OS/390 image using the FENET OSA-2. • Character Special Files—Use character special files that must exist in the /dev directory for each FENET OSA-2. These files are created dynamically by Novell Network Services using defaults. These defaults can be overridden if desired by creating a file called /etc/netware/devices. A sample is installed with the product in the /usr/lpp/netware/samples directory. This file contains an entry for each character special file. Each entry consists of the following: - Character Special File Name - OSA Name The default files created are: • inrdo0 INRT1100 • inrdo1 INRT1101 • inrdo2 INRT1102 • inrdo3 INRT1103 • inrdo4 INRT1104 • inrdo5 INRT1105 • inrdo6 INRT1106 • inrdo7 INRT1107 Each FENET OSA-2 can be shared between NNS servers running on different OS/390 images. Each image is configured with its own device number pair. A device on the LAN will see two servers, each with the same Network Node Number (Ethernet MAC address); however, each is configured with a unique Internal Network Number. Therefore, the complete IPX Address is unique. Recommendation: Do not use the defaults to prevent the following messages shown in the SYSLOG as: INRM0004I IPX Activate Failed. TRLE=INRT1101 Major=1101 INRM0004I IPX Activate Failed. TRLE=INRT1102 Major=1102 INRM0004I IPX Activate Failed. TRLE=INRT1103 Major=1103 Novell Network Services 135 We only use the first file inrdo0 INRT1100. 3.4.3.1 Frame types on the Ethernet LANs (logical LANs) The FENET OSA-2 supports the following frame types: • Ethernet 802.2 • Ethernet II • Ethernet SNAP You can use more than one frame type simultaneously on a LAN. Each one is considered its own logical LAN since a device using one frame type will not be able to see devices using other frame types even if they are on the same LAN segment. FENET OSA-2 does support multiple frame types on the same LAN. It is recommended that multiple frame types on a single LAN segment be avoided as it results in extra traffic on the LAN for the RIPs and SAPs. Also, when devices from one logical LAN try to communicate with another logical LAN, the packets must go into a router and back out onto the LAN, thereby doubling the LAN traffic. 3.4.3.2 IPX network numbers IPX addresses consist of three parts: • Network number—Use an 8-digit hexadecimal number to identify each logical LAN and each server in the network. Each LAN and server must be configured with a unique network number. The network number for the server is known as the internal network number. The network number for the LAN is known as the external network number. • Node address—This is the address associated with an Ethernet card. It is usually burned in by the manufacturer. The server typically has a node address of 1. • IPX socket number—Use this number to identify the destination of the packet within a server. Some are hardcoded for specific purposes (for example, 451 is for NCPs) and the rest are allocated dynamically. The network numbers must be configured in Novell Network Services. An internal network number must be configured using nwcm and must be unique in the network. An external network number must be configured for each frame type on each Ethernet LAN. The external network number must be the same as is configured for all routers using the same frame type on the same network segment. Clients do not need to configure their IPX addresses as they will automatically discover their addresses when they get onto the network. 3.4.3.3 NetWare/IP configuration In this section we mention basic information about how to configure an IP connection. For more information about how to set up NNS using NetWare/IP as connectivity see Novell Network Services for OS/390 Supervising the Network, SA22-7317. 136 Debugging UNIX Applications on OS/390 Note • During our installation under OS/390 V2R7 the NNS product was successfully tested with IPX as connection type only. • Under OS/390 V2R6 the NNS product was successfully tested with NetWare/IP as a connection type within the development environment also. Before configuring NetWare/IP on the NCPS server, make sure the following are functioning: • DNS server with a NetWare/IP domain • DSS server • TCP/IP protocol on the host system for NCPS server Use the ping command to make sure the servers can see and communicate with each other. The NetWare/IP software consists of the following modules: • NWIP daemon—initializes the NWIP driver, sets up communication, and then maintains the SAP and RIP databases by synchronizing them with a DSS server. • NWIP driver—performs the communication tasks through its links to the UDP port and the IPX driver. After the NWNET package is installed, NetWare/IP needs to be configured for it to initialize. This involves: - Configuring the NetWare/IP LAN - Customizing the NetWare/IP process NetWare/IP consists of both server and client software, which enables servers and clients to use TCP/IP instead of, or in addition to, IPX. Nodes on an existing IP network have transparent access to NetWare services and applications. Both servers and clients must be configured to use IP as the transport protocol. The following are not included in Novell Network Services and are required for a NetWare/IP server configuration as prerequisites: • Domain Name System (DNS)—Provides a centralized database of host-to-address mapping • Domain SAP/RIP Service (DSS)—Maintains and distributes SAP and RIP information for the NetWare/IP network. • Forwarding Gateway—A NetWare/IP server that forwards the SAP and RIP information to the NetWare/IP network. NetWare/IP for NCPS servers is based on, and dependent upon, the NetWare/IP 2.2 product currently available for native NetWare 4.11 servers. Table 28 lists sources for the support services not included in the NetWare/IP for NCPS software but which are required by NetWare/IP. Table 28. Server prerequisites Name Description Source Domain Name System (DNS) Provides a centralized database of host-to-address mapping UNIX server Novell Network Services 137 Name Description Source Domain SAP/RIP Service (DSS) Maintains and distributes SAP and RIP information for the NetWare/IP network Native NetWare/IP server Forwarding Gateway A NetWare/IP server which forwards the SAP and RIP information into the NetWare/IP network Native NetWare/IP server Use the required character special file (/dev/nwip), which is created automatically by NNS when configuring the nwcm lan_x_adapter parameter for NetWare/IP. A DNS server maintains a centralized database of host names and addresses, and TCP/IP nodes use the database to locate nodes on the network. These addresses are organized into domains. Figure 62 illustrates this concept. The domain is divided into three subdomains and those subdomains into other subdomains. The white squares represent workstations and servers in the network. Figure 62. NetWare/IP domain NetWare/IP uses only a few of the features of DNS. It requires that you create and set up a special NetWare/IP domain. The domain is created like any other domain but is different because it cannot have any subdomains or hosts. It becomes a logical domain for all the NetWare/IP servers on the network, regardless of their physical location. The NetWare/IP domain unites these servers into a single domain. NetWare/IP also requires that a unique IPX external network number be assigned. All NetWare/IP servers in the same domain must be configured with the same IPX external network number. This is used by the IPX networks and the NetWare/IP network. 138 Debugging UNIX Applications on OS/390 The native NetWare/IP modules allow the native NetWare server to become a DNS server. However, NetWare/IP can use the standard DNS servers found on TCP/IP networks. The NetWare/IP modules for NCPS do not include DNS functionality. NetWare/IP servers and clients use the DNS server to find the nearest DSS server in the NetWare/IP domain. The DSS server must be a native NetWare server. Table 3 shows the sources for information about configuring a DNS server: Table 29. DNS source information Topic Source Required DNS features NetWare/IP Administration Guide for NetWare 4.11 Configuring a native NetWare server as a DNS server NetWare/IP Administration Guide for NetWare 4.11 The DSS maintains the database of SAP and RIP information. NetWare/IP servers use User Datagram Protocol (UDP) packets to exchange SAP and RIP information with the DSS server. NetWare clients use the DSS server to obtain the IP address of their preferred NetWare server or Directory tree so they can log in to the network. On an IPX network, NetWare servers broadcast SAP and RIP information every 60 seconds. On a NetWare/IP network, NetWare/IP servers download their SAP and RIP information from the DSS database. At configurable intervals, the NetWare/IP server synchronizes its SAP and RIP information with the DSS server, and DSS servers synchronize SAP and RIP information with other DSS servers. The DSS server maintains an accurate list of IPX networks and services. NetWare/IP servers inform the DSS server when they initialize, when they are going down, and periodically that their services and networks are still available (the periodic interval is configurable). If the NetWare/IP server fails to send the periodic alive message, the DSS server removes that server's services from its database. For information on setting up a DSS server, see the NetWare/IP Administration Guide for NetWare 4.11. 3.4.3.4 LAN numbers To configure multiple connections to Novell Network Services, each connection on that server must be assigned a number 1–n. Use this number to group the parameters by connection. They have no correlation to LAN numbers assigned on other servers. For example, to configure three networks on a server, use the numbers 1, 2, and 3 as shown in Table 30. Table 30. How to configure three networks Network 1 nwcm -s lan_1_adapter="/dev/inrdo0" nwcm -s lan_1_network=0x50 nwcm -s lan_1_frame_type="ETHERNET_802.2" Network 2 nwcm -s lan_2_adapter="/dev/inrdo2" nwcm -s lan_2_network=0x51 nwcm -s lan_2_frame_type="ETHERNET_802.2" Novell Network Services 139 Network 3 nwcm -s lan_3_adapter="/dev/inrdo3" nwcm -s lan_3_network=0x52 nwcm -s lan_3_frame_type="ETHERNET_802.2" 3.4.3.5 Preparing the FENET OSA2 for IPX protocol Use IP or IPX as a protocol. In this section we show you how to set up an IPX configuration. Before Novell Network Services can be configured to use a FENET OSA-2, the FENET OSA-2 must be configured to the system. This is described in detail for the System/390 Open Systems Adapter Feature, but a summary is provided here. For more information on how to set up an IP configuration see Novell Network Services for OS/390 Installation, GA22-7312. For each FENET OSA-2 connection desired, the following system configuration is required: • IOCDS configuration In the system hardware I/O configuration (IOCDS), associate one even/odd, read/write pair of device numbers with the channel path of each FENET OSA-2 that is to be run used with IPX. Note that this device pair cannot be shared with other communication methods such as TCP/IP or SNA. However, it can share the FENET OSA-2 itself. We used the IOCDS definition shown in Figure 63 for our installation: RESOURCE PARTITION=((A1,1),(A10,A),(A11,B),(A12,C),(A2,2),(A3, 3),(A4,4),(A5,5),(A6,6),(A7,7),(A8,8),(A9,9),(C1,D),(C2, E),(C3,F)) CHPID PATH=(30),SHARED, PARTITION=((A1,A10,A11,A12,A2,A3,A4,A5,A6,A7,A8,A9),(A1, A10,A11,A12,A2,A3,A4,A5,A6,A7,A8,A9)),TYPE=OSA CNTLUNIT CUNUMBR=2320,PATH=(30),UNIT=OSA IODEVICE ADDRESS=(2320,015),UNITADD=00,CUNUMBR=(2320), STADET=Y,UNIT=OSA IODEVICE ADDRESS=232F,UNITADD=FE,CUNUMBR=(2320),STADET=Y, UNIT=OSAD Figure 63. IOCDS definitions • MPC OAT configuration Using OSA/SF, create an MPC OAT entry for each FENET OSA-2 for the IPX protocol. The OSA name must be in the form INRT11nn where nn is a two-digit decimal number in the range 00–99. The name must match the entry in the /etc/netware/devices file or one of the defaults if the file is not present (see the defaults in 3.4.3, “Network configuration” on page 135). Each OSA name must be unique on the system. The unit address of the even device number configured in the IOCDS is also defined here. • VTAM or CS for OS/390 SNA configuration Define the OSA name and a pair of OSA device numbers in the TRLE statement in the TRLE macro of VTAM or CS for OS/390 SNA, whichever is running on the OS/390 system image. The OSA name must match the one defined in the MPC OAT configuration. The device numbers must match the ones defined in the IOCDS as well as correspond to the unit address defined in the MPC OAT configuration. 140 Debugging UNIX Applications on OS/390 Figure 64 on page 141 shows the VTAM TRLE definitions used for our installation in the SYS1.VTAMLST(NETW2320): IPX2320 VBUILD TYPE=TRL INRT1100 TRLE LNCTL=MPC,READ=(2320),WRITE=(2321),MAXBFRU=9 Figure 64. VTAM definitions Figure 65 shows how the OSA2 card should be configured on OS/390: Figure 65. OSA2 configuration overview Note 1. The even unit address in the MPC OAT (for example, 04) must correspond to the device address in the IOCDS (for example, 304). 2. The OSA name (for example, INRT1100) must match in the MPC OAT, TRLE statement, and the /etc/netware/devices file (or the default values). 3. The character special file name (for example, /dev/inrdo0) must correspond to the desired entry in the /etc/netware/devices file or the default values (for example, inrdo0). Novell Network Services 141 Figure 65 through Figure 70 on page 143 describe how to define the OSA-2 card in more detail. Figure 66. OSA-2 CHPID selection Figure 67. OSA CHPID selection continued Figure 68. OSA configuration list 142 Debugging UNIX Applications on OS/390 Figure 69. OSA-2 configuration Figure 70. High Performance Data Transfer Multipath Channel settings For more information about the network configuration see Novell Network Services for OS/390 Installation, GA22-7312, and OS/390 Open Systems Adapter Support Facility User's Guide, SC28-1855. 3.4.3.6 Network discovery In this section we describe how to analyze the network environment. Novell Network Services includes a utility, nwdiscover, which queries the network to set up the IPX router configuration. Use this utility to verify that the FENET OSA-2 configuration is correct. This is highly recommended for initial setup and any time the FENET OSA-2 configuration is changed. The nwdiscover parameters allow several uses: 1. Query the network for network numbers 2. Query the network and update the configuration with the discovered frame types and external network numbers. The parameters that get set for each network are: • lan_x_adapter • lan_x_frame_type • lan_x_network Novell Network Services 143 If this is the first NetWare Server in the network, it is recommended that the external network numbers be assigned rather than randomly generated by nwdiscover. The network numbers are important for troubleshooting network problems and having a numbering convention is very helpful. In any case, the internal network number must be manually configured. Figure 71, Figure 72 on page 144, Table 31 on page 144, and Table 32 on page 144 show some information about the nwdiscover command. nwdiscover [-a] [-f frame_type] [-r retry_count] [-t timeout] [-d pathname] [-v] [-u] [-e frame_type] Figure 71. Syntax of the nwdiscover command You must be the root user to use nwdiscover. The nwdiscover command discovers the network number, frame type, and device of connected IPX networks. It does this by generating two Service Access Protocol (SAP) Get Nearest Server (GNS) requests to the network, and evaluating the results. The first message is a service request message for NetWare servers; the second is a service request message for UNIX servers. If there is no response to the server request messages, an IPX Router Information Protocol (RIP) message is sent requesting information on all networks. If a response is received to any of the messages, nwdiscover extracts the network and frame type from the reply. If the -u option is set, the NetWare configuration file information is updated. The network information is sent to stdout. If an IPX network is already configured via nwcm, it is discovered first by nwdiscover. If no reply is received to any of the request messages, nwdiscover uses the information already configured, or if nothing is configured, it invents a network number, configures the specified frame type, and configures the specified device. Figure 72. Using nwdiscover Table 31. nwdiscover parameter Parameter Usage -a Check all frame types and device types, even if there is a response from a NetWare server. If set with the -u option, any existing configuration is erased, all networks discovered are configured, and the ipx_auto_discovery flag is turned off. -u Update the NetWare configuration file (/etc/netware/nwconfig). If this option is on, the configuration file is updated with the frame type, device name, and network address. -v View in verbose mode. Information is sent to stdout. Table 32. nwdiscover examples 144 Usage Command Check all frame types, update configuration files, and turn off boot-up auto-discovery. nwdiscover -au Debugging UNIX Applications on OS/390 Usage Command Try discovery using the specified device /dev/NE2000_0. nwdiscover -d /dev/NE2000_0 Configure an ETHERNET II network, even if it is not used on your network. nwdiscover -f ETHERNET_II -u Determine what networks are connected to your platform. nwdiscover -av Novell Network Services includes another utility, drouter, which queries and displays the network help to set up the NetWare/IP configuration. This is recommended for initial setup and any time the NetWare/IP configuration is changed. All the available servers should be displayed to connect them. Figure 73 shows an example of the drouter command: HOERNER @ SC64:/etc/netware>drouter NETWORK HOPS TIME NODE -------- ---- ---- -----------3784C340 0000 0001 000000000001 END OF TABLE 2 known networks NETWORK HOPS TIME NODE -------- ---- ---- -----------DEADBABE 0000 0001 00203512DF78 Figure 73. drouter information For more information see Novell Network Services for OS/390 Utilities Reference, SA22-7318. 3.4.3.7 System parameters The current recommendations for BPXPRMxx are documented in OS/390 UNIX System Services Planning, SC28-1890. For running the NetWare Server, if you run with all the defaults in the NWCONFIG file, you cannot use all the defaults for BPXPRMxx (see APAR OW39749). If you want to change the max_connections in the NWCONFIG file, you need to customize the following: • NWCONFIG shm_sizeNetWare Server requires 9 MB plus 1 MB for every 25 connections. For example, if you want max_connections to be 900, then specify 9M + (900/25) = 45 MB Issue the following command from the /usr/lpp/netware/bin directory set using the PATH command in “Environment variables” on page 134. nwcm -v shm_size(to view the actual setting) nwcm -s shm_size=45000000(to set the shm_size to 45 MB) Possible problem: /bin:.:/usr/lpp/netware/bin HOERNER @ SC64:/>nwcm -v -¦--: NWCM-2.1-255. or Cannot bind message domain. NWCM error = 255. Exiting. Novell Network Services 145 Solution: Ensure access to the message catalog. This is done by issuing the correct export command for the NLSPATH. See, 3.4.2, “Environment variables” on page 134. Note The nwcm command results in an entry in the /etc/netware/nwconfig file. Use the obrowse command to check your final configuration in the nwconfig file. • BPXPRMxx Use the following sizes for 900 max_connections with defaults and minimum values which can be set up based on the guidelines defined in the preceding mentioned document. The key is to increase the size of the following parameters in the same proportion as the shm_size increase. ipcshmspages= 12500 - default is 262144 - max is 524032 Note The IPCSHMSPAGES value needs to be changed. On OS/390 the R7 default value is 262144. The IPCSHMSPAGES value for 900 max_connections should be IPCSHMSPAGES(2621440). See APAR OW39749. ipcshmmpages= 12800 - default is 256 - max is 524287 Note Increase the IPCSHMMPAGES in the BPXPRMxx parmlib member also if you get the following message during the start of the server using NWSERVER: BPXF024I (HOERNER) SERVER-4.10-67: The virtual process identifier 642 table was not correctly set up. ipcshmnsegs= 500 - default is 10 - max is 1000 3.5 Installing NNS for OS/390 In this section we describe how to install Novell Network Services after the SMP/E installation has been completed. Refer to Novell Network Services Program Directory for the SMP/E installation instructions and the system requirements. To perform the following steps, the installer must log in to OS/390 UNIX System Services as root or another user ID with equivalent (superuser) authority. The NDS configuration process (dsinstall) will create a user object of ADMIN. The ADMIN user has supervisory authority within Novell Network Services and can access all of the objects in the directory tree. Note For our installation we use IPX as a connection type only. 146 Debugging UNIX Applications on OS/390 3.5.1 Before you get started 3.5.1.1 Check the environment Before you start the server installation, verify the following: • Ensure that you have activated your VNET. • Ensure that your OSA card is online. 3.5.1.2 Worksheet The following must be configured when installing Novell Network Services. Use the worksheet provided in Appendix 3.7, “Getting NetWare client software” on page 180 as an organizational aid when installing Novell Network Services. See the values in brackets () used for our installation. For more information see, Figure 65 on page 141 and 3.5.2, “Server installation” on page 148. server_name (NWREDPROJECT) Provide the name under which all NetWare Services (NCP, AFP, and NVT) are advertised. It must be unique from other NetWare servers and cannot contain spaces or punctuation marks. Alphabetic characters are converted to uppercase. Length: 2 to 47 characters ipx_internal_network ( 0x3784C340) Provide a network address for access from multiple LANs. This parameter specifies the address of the internal network (LAN 0). This address must be unique on the IPX internetwork. Enter values in hexadecimal (0xNNNNN), decimal (NNNNN), or octal (0NNNN). Values are displayed in hexadecimal format. Supported values: 0x1 to 0xfffffffe ts_type (Single) Determine how the server synchronizes time and is initially set during NDS installation. By default, time synchronization occurs within an NDS tree. Supported types: SINGLE (typically used for smaller LANs and serve as the sole time source); REFERENCE (typically used for larger LANs and serve as a time source for Primary and Secondary servers); PRIMARY (typically used with a Reference server or other Primary servers); SECONDARY (obtain time from a Single Reference, Reference, or Primary time server). lan_x_adapter (/dev/inrdo0) Specify the name of the device driver for the network board. Values are the path and file name of a valid LAN driver. The x indicates by number which LAN you are configuring. To activate NetWare/IP, set the value to /dev/nwip. The lan_x_network parameter must also be configured. Maximum length: 127 Novell Network Services 147 lan_x_network (0x1) Specify the IPX external network number for the cabling system to which the network board is attached. All IPX drivers linked to this cabling system must use the same network number for the cabling system and this frame type. (The x indicates by number which network you are configuring.) Each frame type requires its own unique IPX external network number. Supported values: Any hexadecimal integer from 0x1 to 0xFFFFFFFE that does not conflict with other assigned IPX network numbers (internal and external). Recommendation: Use the nwdiscover command to check which external network number already exists. lan_x_frame_type (ETHERNET_802.2) Specify the frame type. (The x indicates by number which LAN you are configuring.) Supported values: ETHERNET_802.2, ETHERNET_II, ETHERNET_SNAP. The default is ETHERNET_802.2. The worksheet section titled Optional Configuration (see 3.9, “Installation Worksheets” on page 183) can be filled in with other optional parameters. These are described in the Novell Network Services for OS/390 Utility Reference and Novell Network Services for OS/390 Supervising the Network. Note At this point, you can proceed to the next chapter, which describes the steps involved in bringing up the server for the first time. If you have not read the publication Novell Network Services for OS/390 Introduction to NDS, it is highly recommended that you do so at this time. 3.5.2 Server installation The following is a step-by-step procedure for server installation. See the values in brackets () used for our configuration. 1. Log in to OS/390 UNIX System Services. • Log in to TSO/E and enter the OMVS command to invoke the shell, or, if you prefer the Asynchronous Terminal Interface, rlogin or telnet in to the shell. Remember you must log in with superuser authority, so use the root or an equivalent ID. • Check the environment variables for the logged on ID. Both the PATH and NLSPATH variables must be set. To display the current values of these variables, enter at the shell prompt: -$ echo $PATH -$ echo $NLSPATH • To add these values, enter at the shell prompt: -$ export PATH=$PATH":/usr/lpp/netware/bin" -$ export NLSPATH=$NLSPATH":/usr/lpp/netware/nls/msg/%L/%N" 148 Debugging UNIX Applications on OS/390 If you do not want to export these variables each time you log in, add the export statements to the profile or login script of the ID you are using for the installation. Note The common profile is available in the directory /etc and the user profile is available in the directory, which is defined in the OMVS segment of the user. Recommendation: Add both export commands to the existing PATH and NLSPATH statements in the common profile using the oedit command that all users are able to issue the NetWare nwcm commands. 2. Set up the SYS volume. Be certain that the HFS for the SYS volume already exists, and that it is mounted. If you are not sure, see 3.4.1.1, “NNS volumes” on page 132 and review the sample procedure. The SYS volume is created in the /etc/netware/vol directory after you enter the following command: $ nwvm -R SYS Additionally, the client utilities can be copied to the SYS volume. This is necessary if it is desired to access the administration executables and other client functions (such as ncopy, nwadmin etc.) when the client logs on to this server. These utilities are installed into /usr/lpp/netware/SYS. The following command will copy them all into the SYS volume: cp -R /usr/lpp/netware/SYS/* /etc/netware/vol/SYS 3. If you are using NetWare/IP, set the nwip configuration parameters: $ nwcm -s lan_<x>_adapter= "/dev/nwip" Replace the <x> with the number of LAN you are configuring. If you are using both IPX and IP, the number must be different from the number used for the IPX LAN. To set the IPX number for the LAN, type: $ nwcm -s lan_<x>_network=hexnum (nwcm -s lan_<1>_network=50) Replace the <x> with the number you used before. These two parameters must be set up for the same LAN for NetWare/IP to initialize. Replace hexnum with the same external network number as is configured for all other NetWare servers in the same domain. The following message is shown in case of a conflict: NPSD-2.1-90: LAN configuration is invalid, network number for lan 0 and lan 1 are duplicates 4. Configure the LAN. There are two methods for configuring the LAN. If the server is the first NetWare Server installed in the network, follow the installation worksheet. Use the values you have recorded there for the board device file name, frame type, and external network number that describe LAN 1. • Set lan_1_adapter to the device file name. Values are the path and file name of a valid LAN driver (maximum length: 127 characters). $ nwcm -s lan_1_adapter="device_file_name" (/dev/inrdo0) Novell Network Services 149 For more information see Figure 65 on page 141. Ensure that the entry inrdo0 INRT1100 is available in the etc/netware/devices file. • Specify the lan_1_frame_type as ETHERNET_802.2, ETHERNET_II, or ETHERNET_SNAP. $ nwcm -s lan_1_frame_type="frame_type" (ETHERNET_802.2) • Set the lan_1_network value to the external network number you have defined. The value can be any hexadecimal integer from 0x1 to 0xFFFFFFFE that does not conflict with other assigned IPX network numbers, internal or external. $nwcm -s lan_1_network="External_Network_Number" (0x1) If this is NOT the first NetWare server defined in the network, use Network Discovery to query the network and to update the Novell Network Services configuration automatically. At the shell prompt, enter: $ nwdiscover -auv The nwdiscover command discovers the network number, frame type, and device of connected IPX networks. This command updates the /usr/lpp/netware/nwconfig file. For more information see 3.4.3.6, “Network discovery” on page 143. 5. Assign an internal network number. Regardless of the method used (manual or automated) to configure external network numbers, the address of the internal network can only be set from nwcm. The internal network number must be unique in the network. For example: $ nwcm -s ipx_internal_network=0xfffffff2 (0X3784C340) 6. Name the server. Assign a name to the server that is unique from other NetWare servers on the network. Do not use spaces or special characters in the name. The name is not case-sensitive (Novell Network Services folds it to uppercase). For example: $ nwcm -s server_name=NNS001 (NWREDPROJECT) 7. Establish the time synchronization type. Specify the type of time synchronization carried out by this server. For example: $ nwcm -s ts_type="Single" 8. Start the network protocol stack. If you are using NetWare/IP, TCP/IP, and INETD must be started on OS/390. Please refer to documentation for OS/390 TCP/IP OpenEdition if you need assistance with this step. Once TCP/IP is initialized, at the shell prompt issue: $ nwipd Then for either NetWare/IP or IPX protocol, issue: $ startnps INRM0001I IPX Open Successful. TRLE=INRT1100 Major=1100 Minor=00 150 Debugging UNIX Applications on OS/390 The following message is shown if the network protocol stack is already started: NPSD-2.1-121: Open of /dev/ipx0 failed: EDC5114I Resource busy. 9. Start the license manager. $ lsman 10. Start the server. $ nwserver Continue to the next step when the following messages are displayed: BPXF024I (xxxxxx) Directory Services: Could not open local database, error: -723 BPXF024I (xxxxxx) NetWare server N40NOV2 is waiting for Directory Services to be installed. To finish bringing the server up, you must run DSInstall. Figure 74 on page 152 and Figure 75 on page 153 show the messages in the syslog, if the server is successfully started using the nwserver command after setting the shared memory within NetWare to 150 MB and setting the IPCSHMMPAGES in the BPXPRMxx Parmlib member to 524200. For more information about known problems starting the Novell server using the nwserver command see 3.6.4, “Known problems” on page 170. Novell Network Services 151 PXF024I (HOERNER) Initializing inform. BPXF024I (HOERNER) NetWare Services 4.10b for OS/390 BPXF024I (HOERNER) Copyright 1997 Novell. All Rights Reserved. BPXF024I (HOERNER) SERVER-4.10-3: The NetWare server is using 806 /etc/netware/nwconfig as the configuration file. BPXF024I (HOERNER) Initializing LSManager. BPXF024I (HOERNER) SERVER-4.10-8: The NetWare server is configured 808 for 990 client connections. BPXF024I (HOERNER) SERVER-4.10-11: Shared memory size is 150000000 809 bytes. BPXF024I (HOERNER) SERVER-4.10-608: License file processing complete. 810 Total number of licensed connections is 0. BPXF024I (HOERNER) SERVER-4.10-13: No valid license files were found. 811 Authorizing 990 licensed connections. BPXF024I (HOERNER) Getting shared memory of 150994944 BPXF024I (HOERNER) shmAttachPoint = 62300000 BPXF024I (HOERNER) Initializing server information lib. BPXF024I (HOERNER) Initializing statistics. BPXF024I (HOERNER) Initializing shared file descriptors. BPXF024I (HOERNER) Initializing communications. cmn_err NOTICE: NCPIPX: Hash table allocated at 0x9070060 32 entries BPXF024I (HOERNER) The server address is 3784c340. BPXF024I (HOERNER) Initializing file system. BPXF024I (HOERNER) nwserver (NWS Daemon): Mounting NetWare volume 0 821 as SYS. BPXF024I (HOERNER) BPXF024I (HOERNER) Mounted volume 0: 827 Volume name: SYS File System Type: Standard Host mount point: /etc/netware/vol/SYS Control path: /etc/netware/vol/control/SYS Name spaces: UNIX DOS OS2 Status: READ and WRITE BPXF024I (HOERNER) Maximum Inode File Size: 6291456 828 Minimum Directory Sync Interval: 10 Mandatory Directory Sync Interval: 900 Directory Purge Threshold: 32 BPXF024I (HOERNER) Initializing connection table. BPXF024I (HOERNER) Initializing lock manager. BPXF024I (HOERNER) Initializing events. BPXF024I (HOERNER) Initializing time synchronization. Figure 74. Successful nwserver command to start the server 152 Debugging UNIX Applications on OS/390 BPXF024I (HOERNER) Initializing NetWare Directory Services. BPXF024I (HOERNER) Initializing Netware Directory Services. BPXF024I (HOERNER) Initializing qms. BPXF024I (HOERNER) Initializing accounting. BPXF024I (HOERNER) Initializing spooler emulator. BPXF024I (HOERNER) Initializing NetWare Trustee Database. BPXF024I (HOERNER) Setup trustee database. BPXF024I (HOERNER) SERVER-4.10-156: A new trustee file is being 840 created for volume 0. BPXF024I (HOERNER) Setup NCPX information. cmn_err CONTINUING: NEMUX Initialized BPXF024I (HOERNER) Spawning Timer Daemon. BPXF024I (HOERNER) Spawning NTSD. BPXF024I (HOERNER) Spawning SAP. BPXF024I (HOERNER) Spawning Logical Lock Daemon. BPXF024I (HOERNER) Spawning File Lock Daemon. BPXF024I (HOERNER) Spawning Physical Lock Daemon. BPXF024I (HOERNER) Spawning Semaphore Daemon. BPXF024I (HOERNER) Spawning Background Daemon. BPXF024I (HOERNER) Spawning Janitor Daemon. BPXF024I (HOERNER) Spawning Skulker Daemon. BPXF024I (HOERNER) Initializing async events. BPXF024I (HOERNER) sfdopen: EDC5129I No such file or directory. err 877 on /etc/netware/_netware/0.DSB, errno = 129, errnoJr = 05620062 BPXF024I (HOERNER) Directory Services: Could not open local 878 database, error: -723 BPXF024I (HOERNER) NetWare server NWREDPROJECT is waiting for 879 Directory Services to be installed. To finish bringing the server up, you must run DSInstall. Figure 75. Continuation of the syslog in Figure 74 11.Configure NDS using dsinstall. $ dsinstall Figure 76 shows the messages from the syslog issuing the dsinstall command in the ISHELL: BPXF024I (HOERNER) Bindery open requested by the SERVER BPXF024I (HOERNER) Established communication with server NWREDPROJECT. 883 IBM BPXF024I (HOERNER) Directory Services: Local database is open BPXF024I (HOERNER) NWS NDS SAP Daemon: The server internal address is 885 3784c340. BPXF024I(HOERNER) NWS NDS SAP Daemon:Theserver nodeaddressis886 000001. BPXF024I (HOERNER) NWS NDS SAP Daemon: The server socket is 451. Figure 76. Messages because of the dsinstall command Novell Network Services 153 The following menu appears: 1) Install a new SANDS tree 2) Install a new SCALE tree 3) Add a new server into an existing SCALE tree 4) Upgrade this SANDS server/tree to SCALE 5) Remove Directory Services from this server 6) Upgrade mounted volumes into the Directory 7) Exit Enter option number: Figure 77. Directory service installation If you are installing a new NDS tree, enter 2 to install a new SCALE tree and proceed with step 13. If you are adding the server to an existing tree, enter 3 to add the server to an existing tree and proceed with step 16. For more information see 3.2.2, “Features of NNS” on page 128. 12.The following prompt appears: Enter the NDS Tree Name: Type the name of the NDS tree name and press Enter. (NW_RED_IBM) 13.The following prompt appears: Enter the Server Context (for example, OU=aa.OU=bb.O=cc): Type the context in which you wish to place the server in NDS and press Enter. (O=IBM) 14.The following prompt appears: Enter the ADMIN password: (admin) Reenter the ADMIN password: (admin) Type the password for the ADMIN user ID. The password needs to be entered again to verify that it was entered correctly. NDS installation is now complete. Proceed to step 18. 15.The following prompt appears: Enter the NDS Tree Name: Type the name of the NDS tree name and press Enter. 16.The following prompt appears: Enter the ADMIN user context (for example, OU=aa.OU=bb.O=cc): Type the context of the ADMIN user ID and press Enter. 17.The following prompt appears: Enter the ADMIN password: Type the password for the ADMIN user ID and press Enter. NDS installation is now complete. 18.Verify the state of the Novell Network Services server. At the shell prompt, enter the nwserverstatus command. You should see the following: $ nwserverstatus 154 Debugging UNIX Applications on OS/390 NetWare server <the server name> is up. HOERNER @ SC64:/>nwserverstatus NetWare server NWREDPROJECT is up. If you do not get this message, review the installation and make sure that all steps completed successfully before contacting support. 3.5.3 Installing NetWare client software Before you can continue setting up your network, you must install a single client. From the client, you can run either NetWare Administrator (NWADMIN) or NETADMIN to start creating objects on your network. You can install and customize other clients later. See the Novell publications for details. Before you can install client software, you must have access to installation diskettes for NetWare client software. For instructions on how to obtain client diskettes, see 3.7, “Getting NetWare client software” on page 180. Once you have client installation diskettes available, use the installation procedures for your client operating system. Note At this point, your server is up and running. You can now go to the publication Novell Network Services for OS/390 Supervising the Network, SA22-7317, which describes how to administer and maintain your NetWare server. 3.5.3.1 Login from a NetWare client In this section we describe the login from a Windows NT Novell client. Figure 78 on page 156 through Figure 82 on page 158 show the login process. Choose the IntranetWare Login from the Network Neighbor icon using the right mouse button, as shown in the following figure: Novell Network Services 155 Figure 78. Right mouse click the Network Neighbor icon Selecting the IntranetWare Login provides the following Novell NetWare Login panel: Figure 79. Novell NetWare login panel 156 Debugging UNIX Applications on OS/390 Type your user ID and password on the login panel, click OK and the panels appear as shown in Figure 80. Figure 80. Novell IntranetWare Client and Connection panels Get a list of the available servers by clicking the server button from the Connection panel: Figure 81. Novell IntranetWare Client Server list The expected server in the list verifies that the connection is possible. Novell Network Services 157 Note If no server is found in the list shown in Figure 82, the connection is not possible. Figure 82. Select the server from the list and click OK to log in Figure 83. Login result 158 Debugging UNIX Applications on OS/390 Figure 84. Check the IntranetWare Connections using Network Neighbor Figure 85 through Figure 88 on page 161 show the small Novell environment used in our installation based on the definitions in 3.5.2, “Server installation” on page 148. Figure 85. Installation environment Novell Network Services 159 Figure 86. Server identification showing the connection type IPX Figure 87. Server error log 160 Debugging UNIX Applications on OS/390 Figure 88. Environment of the ADMIN user Novell Network Services 161 3.6 Serviceability and debugging In this section we provide information about how to service and debug the NNS product. 3.6.1 Hints and tips This section contains information on how to prevent and service an NNS problem. • Ensure that all the available maintenance for FMID HNNWS110/COMPID 564701NWS is installed. • Ensure that all the available UNIX Sytem Services maintenance is installed. • If running OS/390 V2R7 or higher, ensure that all available DFSMS 1.5 maintenance is installed. • Ensure that USS is successfully initialized shown by the message in the syslog: BPXI004I OMVS INITIALIZATION COMPLETE • Ensure that a message in the syslog for all the NNS-related HFS data sets defined indicates that they are mounted (for example, BPXF013I FILE SYSTEM OMVS.NWSYS.HFS 781 WAS SUCCESSFULLY MOUNTED). • Ensure that the following message is shown in the syslog to indicate the STREAMS support is given: BPXTN005I STREAMS module map INRKMAP loaded If the following message is shown instead, BPXTN004I Module map load failed for module INRKMAP, the STREAMS support is not given. Thus, the installation of the STREAMS has to be checked. Any change requires an IPL. • Ensure that the client is able to connect to Ethernet instead of token-ring because the OSA-2 card on the OS/390 host does not support token-ring. • Ensure that the Ethernet cable is 100 m as max length. • To be sure that the correct TCP/IP stack is used issue the following command from the ISHELL: export_bpxk_setibmopt_transport=tcpipoe. See the section titled "Using Specific Transports under Common INET" in OS/390 UNIX System Services Planning, SC28-1890. 3.6.1.1 Interpret a USS message How to interpret a USS message (for example, BPXF002I FILE SYSTEM HOERNER.HFS.TEST WAS 539 NOT MOUNTED. RETURN CODE = 00000081, REASON CODE = 0594003D) see, Chapter 5, NFS section "5.2.6.2". For more information on how to interpret a USS message see 6.2.2, “RACF profiles” on page 258. 3.6.2 Tuning the NNS server In this section we discuss how to limit or increase the UnixWare resources available for NetWare Services. We also describe how to manage engines, configure shared memory size, limit error log file size, and set packet burst limits. 3.6.2.1 Managing engines NetWare Services servers refer to certain processes as NCP engines. NCP engines are often considered the workhorses of NetWare Services servers and are responsible for the initial processing of all client requests. NetWare Services 162 Debugging UNIX Applications on OS/390 requires a minimum of two engines running at all times. The more work you require of your system, the more engines you will need to start. Adding too many engines, however, may decrease performance. So generally you need two engines per CPU. Running more engines requires more RAM. After the NetWare server has booted, engines can be increased or decreased using the nwengine utility. The number should be increased if the nxinfo utility reports an excessive number of packets dropped because of server activity. To prevent NetWare from using too many resources, you can limit the number of engines that can be started after boot time. You can specify the number of NCP engines to start by using the nwcm command line utility to set "Number of NCP Engines to Start" and "Maximum Number of NCP Engines". To specify how many engines to start automatically when the NetWare server process is started, see 3.6.2.4, “Tuning your server” on page 163. 3.6.2.2 Configuring shared memory Shared memory is divided into pools and is controlled by internal locking mechanisms. Connections tables, data structures, trustee databases, NetWare server information, and volume table information are all data that shared memory uses. If you use Packet Burst to add more connections, volumes, trustee assignments, and so on, you should increase the shared memory size. See the description of shm_size in 3.6.2.4, “Tuning your server” on page 163 to configure shared memory. 3.6.2.3 Adjusting the size of your error log Any errors your server experiences are saved to the error log file, SYS$LOG.ERR. You can change the size of this log depending upon how many messages you want to store in this file. Make sure you monitor this file because if messages come in and the file is full, messages are saved to a backup (SYS$LOG.OLD) and a new file, SYS$LOG.ERR, is created. Only one SYS$LOG.ERR.OLD is maintained. See the description of err_log_file_size in 3.6.2.4, “Tuning your server” on page 163 to change the size of your error log file. 3.6.2.4 Tuning your server Use the following information to tune your system. Parameters: Using the nwcm command line utility, set the following parameters as appropriate. For further information on how to use the options within nwcm, refer to "nwcm" in Novell Network Services for OS/390 Utilities Reference, SA22-7318. For further discussion of the parameters, please see "General Server Parameters" in Novell Network Services for OS/390 Utilities Reference, SA22-7318. The Basic category shows the most commonly changed NetWare Services tunable variables. • ncp_engines_to_start. This variable specifies the number of NCP engines you want running as the default every time the NetWare server process starts. The default is 2. This is the minimum number that allows your system to run efficiently under normal conditions. We suggest that one NCP engine be set for every four clients that are active and not exceed four engines per CPU. Novell Network Services 163 • max_ncp_engines. This variable specifies the maximum engines that can run simultaneously. The maximum default is 10. The maximum allowed is 25. This variable should always be greater than the "Number of NCP Engines to Start" variable. • shm_size. This variable specifies shared-memory segment size. This should be increased as the number of connections, trustee assignments, volumes, open files, and record locks increases. The OS/390 system parameters may need to change if you increase this parameter. See the Novell Network Services for OS/390 Installation for more information. • err_log_file_size. This is the maximum size, in bytes, of the error log file, SYS$LOG.ERR. When the maximum size is reached, error log messages are copied to a backup and a new error log file is created; "0" means logging is not performed. For more information see Novell Network Services for OS/390 Supervising the Network, SA22-7317. 3.6.3 Debugging In this section we give information about the tools that are available to analyze a problem and common information to debug the NNS product. 3.6.3.1 LANalyzer—packet flows on the wire LANalyzer usage • Check server health - Server still SAPing/RIPing - Packets sent back to client • Determine packet flow for typical transaction - SAP/RIP - Connection/login requests - Other NetWare Core Protocol requests • Debug transaction problems - Error return codes to clients + Use to trace back to code issuing RC - Packet fields sent to/from client/server Figure 89 on page 165 through Figure 91 on page 166 show information about the LANalyzer trace. In our environment we installed the LANalyzer software package on a Windows 95 client. We were not able to install it on a Windows NT client. Figure 89 on page 165 displays the main LANalyzer screen. From here you select Capture from the action bar to get the filter shown in Figure 90 on page 165. The trace should be started using the Start button. 164 Debugging UNIX Applications on OS/390 Figure 89. LANalyzer dashboard Figure 90 shows the following filter criteria: • Between This Workstation and any other server (you can select a specific one) • ALL packets of the NetWare protocol Figure 90. LANalyzer filter Figure 91 on page 166 displays the result of a Begin LOGIN request after clicking the Stop button from the main screen shown in Figure 89 on page 165. If the IVN is selected from the NDS screen, the packet (in hex), which goes through the wire, is shown as highlighted on the lower screen. This packet should be found in the GTF Trace on the host to confirm that the request was successful. Novell Network Services 165 Figure 91. LANalyzer viewing 3.6.3.2 CTRACE—trace information for kernel level In this section we describe the use of the CTRACE in more detail. For OMVS, the STREAMS FILESYSTYPE statement must have character special enabled (-t (trace_opt)). • See 3.4.1.2, “STREAMS considerations” on page 132. Parmlib member CTIBPXxx has OS/390 UNIX tracing options pointed to from BPXPRMxx using CTRACE(CTIBPXxx)—default CTIBPX00. In CTIBPXxx, indicate TRACEOPTS ON, and OPTIONS('CHAR') or OPTIONS('ALL'). Figure 92 shows an example of how to force an SVC dump, which incorporates the CTRACE. DUMP COMM=(PROCESS CTRACE) *041 IEE094D SPECIFY OPERAND(S) FOR DUMP COMMAND R 41,JOBNAME=(OMVS,INR*),END *IEA911E COMPLETE DUMP ON SYS1.DUMP99 411 Figure 92. Capture an SVC dump 166 Debugging UNIX Applications on OS/390 Use the STREAMS configuration utility configstrm to dynamically alter trace options (requires USS APAR OW34480): /usr/sbin/configstrm Syntax: configstrm [-bimv] [-h high_mem | ?] [-l loadmod]... [-t trace_opt | ?]... Description: This utility will set and query the STREAMS physical file system configuration. Options: t trace_opt Set and query trace options. • Parameters to set in BPXPRMxx parmlib member. format: FILESYSTYPE TYPE(STREAMS) ENTRYPOINT(BPXTNSTR) PARM(-t options) • off - disable • all - enable all trace types • code|nocode - internally coded traces • proc|noproc - procedure entry/exit traces • normal|nonormal - code and proc traces • diag|nodiag - internal debugging traces • data|nodata - msg block data content traces • nw|nonw - NetWare device traces PROC—shows details about STREAMS flows, OSA device flows, NetWare UDP flows NW—all NetWare traces for kernel (came with base product) DATA—packet contents at various points in kernel (mostly at puts) Recommendation: Run with normal as the default. For more information see 3.4.1.2, “STREAMS considerations” on page 132. For more information on how to capture the CTRACE see Chapter 6, “Network File System (NFS)” on page 239, "6.2.5, “Debugging” on page 259, OS/390 UNIX System Services Planning, SC28-1890, and: http://www.s390.ibm.com/oe/samples/oectrace.html Novell Network Services 167 3.6.3.3 GTF traces—trace information for user level In this section we inform you on settting up and capturing a GTF trace. • Create a data set to hold traces (vb,lrecl 27994, blk 27998, 300/20 cyls) • Parmlib member (for example, GTFCL1) to put GTF parms in: TRACE=USRP USR=(F70,F71,F72,F73) END Figure 93 decribes the GTF parms: F70 F70 (GTRACE_STREAMS (GTRACE_STREAMS in in gtrace.h) gtrace.h) getmsg,putmsg,ioctl getmsg,putmsg,ioctl (GTRACE (GTRACE macro) macro) Streams Streams interface interface data data trace trace F71 F71 (GTRACE_ENTR (GTRACE_ENTR in in gtrace.h) gtrace.h) entry/exit entry/exit macros macros (INRENTn (INRENTn Macro) Macro) C++ C++ Entry Entry and and parameter parameter entry entry tracing tracing F72 F72 (GTRACE_EXIT (GTRACE_EXIT in in gtrace.h) gtrace.h) exit exit macros macros (INREXIT (INREXIT macro) macro) C++ C++ exit exit tracing tracing F73 F73 (GTRACE_DSTRACE (GTRACE_DSTRACE in in gtrace.h) gtrace.h) DStrace DStrace (GTRACE (GTRACE macro) macro) DStrace DStrace facility facility Event Event scheduling scheduling tracing tracing Figure 93. GTF parms • Proclib member to start GTF: //GTFCL PROC MEMBER=GTFCL1 //IEFPROC EXEC PGM=AHLGTF,PARM='MODE=EXT,DEBUG=NO, TIME=YES,BLOK=20M,TIME=1440,REGION=2880K' //IEFRDER DD DSNAME=dataset,DISP=SHR,UNIT=3390 //SYSLIB DD DSNAME=SYS1.PARMLIB(&MEMBER),DISP=SHR • Before starting the server, enter USS shell command: export _CEE_RUNOPTS="test" • Start GTF trace procedure: S GTFCL.GTF and respond ’U’ to prompt for additional parms • Start up server • Perform tests • Stop traces: ’P GTF’ 168 Debugging UNIX Applications on OS/390 3.6.3.4 CEEDUMP and SVCDUMP If NetWare code generates a dump (using nwabort), both CEEDUMP and SVCDUMP are created. The CEEDUMP is useful for initial investigation—it contains information around registers and trace back information. The SVCDUMP will always have return code EC6 with reason code 7FF. System hang conditions or unusual errors may require forcing an SVCDUMP. • Forcing an SVCDUMP - Determine address spaces to capture + nwserver, engines, daemons, and so forth based on problem - Identify address space IDs + MVS command: D OMVS,A=ALL + Find asid for corresponding name - DUMP COMM=("dump title - up to 100 chars") R xx,ASID=(up to 15 asids), DSPNAME=(ka.SYSZBPX1,ka.SYSZBPX2), SDATA=(CSA,PSA,RGN,SQA,SUM,TRT,GRSQ) (ka=omvs asid) Note For more information how to capture a USS dump see, 3.6.3.2, “CTRACE—trace information for kernel level” on page 166, OS/390 UNIX System Services Planning, SC28-1890-06 , and http://www.s390.ibm.com/oe/samples/oectrace.html • For hangs add LSQA and NUC to SDATA 3.6.3.5 Common address space names In this section we give information about the related address space names. The complete list is in /u/netware/nwu_top/os390inc/abbrev.h. • inrsapdn - SAP daemon (n is numeric value) • inrtime - timer daemon • inrjani - janitor daemon • inrskul - skulker daemon • inrengn - NCP engine • inrservn - nwserver • inrflck - file lock daemon • inrslck - semaphore lock daemon • inrphlk - physical lock daemon • inrntsd - timer synchronization daemon • inrback - background daemon Novell Network Services 169 3.6.3.6 Server recovery—hangs Symptom: nwshut results in error message • Cancel/kill processes - In omvs, issue: ps -A (note process IDs) + 33554457 ? 0:00 /usr/lpp/netware/bin/nwserver - Then kill processid + Check the processid using ps -A + If this does not work, try kill -9 processid • As a last resort, cancel/force address space(s) - Issue: D OMVS,A=ALL (or SDSF option DA) - CANCEL jobname - If this fails, issue FORCE jobname ARM + If that fails, issue FORCE jobname Recommendations: • • • • Use the command nwshut only to down the OS/390 Novell server. Do not interrupt the shutdown process as mentioned by nwshut. Do not issue stopnps Check the status of the server with nwserverserver and use nwserver to bring the server up again. • Make sure all of your users are logged out of the server if you shut it down. 3.6.4 Known problems This section has information about known problems from the installation of the NNS for OS/390 product. • Message CEE3204S System detected a protection exception during startnps Additional symptoms: - From the CEE dump: Condition Information for /u/netware4/nwu_top/os390dir/rtl/time.c CIB Address: 000E4630 Current Condition: CEE3204S The system detected a protection exception. Location: Program Unit: /u/netware4/nwu_top/os390dir/rtl/time.c - RC 79 Reason 11B3005A - AbendU4039 With APAR OW38371 installed a message will come up inform to define a STREAMS Filesystype. Solution: Define the correct STREAMS Filesystype in the BPXPRMxx parmlib member. 170 Debugging UNIX Applications on OS/390 • Message BPXF024I shmget returned 79, errno2=07200316 Additional symptoms: - SERVER-4.10-14: The NetWare server is unable to create a shared memory segment. - Server initialization stops Solution: Increase the IPCSHMSPAGES in the BPXPRMxx parmlib member. See Apar OW39726 and 3.4.3.7, “System parameters” on page 145. • Message BPXF024I SERVER-4.10-31:The server is unable to access host user or group "nwgroup". Additional symptoms: - Message BPXF024I SERVER-4.10-24: The NetWare file system could not be initialized. The problem was the groups were defined as users. Solution: Ensure the user IDs and groups are defined correctly. Use the RACF display and check that the OMVS portion is also defined. See 3.4.1.3, “User IDs required” on page 134. • Message IEW2648E during SMP/E installation. Problem: The Base code and the PTFs are installed together (the supporting documentation may state that this is possible). This is a known problem with service and will be fixed in a future PTF. Circumvention: Install the Base code first and then the PTFs. See Apar OW38371 for more information. • Message BPXF024I SERVER-4.10-63 the NetWare server is unable to complete initialization and is shutting down. Problem: After a hang occurs the recovery of the server was done; see 3.6.3.6, “Server recovery—hangs” on page 170. But the server was neither unable to come down nor initialize correctly to come up. Figure 94 show the related messages in the syslog. BPXF024I (HOERNER) Getting shared memory of 150994944 135 BPXF024I (HOERNER) shmget returned 75, errno2=07200304 136 BPXF024I (HOERNER) SERVER-4.10-14: The NetWare server is unable to 137 create a shared memory segment. BPXF024I (HOERNER) SERVER-4.10-15: Shared memory cannot be 138 initialized. BPXF024I (HOERNER) SERVER-4.10-63: The NetWare server is unable to 139 complete initialization and is shutting down. Figure 94. Messages in the syslog Solution: Ensure using SDSF option DA that all INR* job names are canceled. • Message Problem with max_connection and shm_size In this section we describe a problem during the installation of NNS regarding the shared memory and the connections. Figure 95 shows an example of where the nwserver command fails: Novell Network Services 171 BPXF024I (HOERNER) Initializing inform. BPXF024I (HOERNER) NetWare Services 4.10b for OS/390 BPXF024I (HOERNER) Copyright 1997 Novell. All Rights Reserved. BPXF024I (HOERNER) SERVER-4.10-3: The NetWare server is using 592 /etc/netware/nwconfig as the configuration file. BPXF024I (HOERNER) Initializing LSManager. BPXF024I (HOERNER) SERVER-4.10-8: The NetWare server is configured 594 for 50 client connections. BPXF024I (HOERNER) SERVER-4.10-11: Shared memory size is 45000000 595 bytes. BPXF024I (HOERNER) SERVER-4.10-608: License file processing complete. 596 Total number of licensed connections is 0. BPXF024I (HOERNER) SERVER-4.10-13: No valid license files were found. 597 Authorizing 990 licensed connections. BPXF024I (HOERNER) SERVER-4.10-120: The max_connections parameter is 598 set too low. You have 990 authorized licensed connections but only 50 max connections. The max_connections parameter should be set to the number of licensed connections PLUS the number of expected server to server connections needed to support NetWare Directory Services in your directory tree. BPXF024I (HOERNER) Getting shared memory of 45088768 BPXF024I (HOERNER) shmAttachPoint = 62300000 BPXF024I (HOERNER) Initializing server information lib. BPXF024I (HOERNER) SERVER-4.10-67: The virtual process identifier 602 table was not correctly setup. BPXF024I (HOERNER) SERVER-4.10-63: The NetWare server is unable to 603 complete initialization and is shutting down. BPXF024I (HOERNER) Services are down till TimeSync BPXF024I (HOERNER) Returning from the IOCTL NMXP_SHUTDOWN BPXF024I (HOERNER) Services are down till LockManager Figure 95. NWSERVER example The example in Figure 95 shows two problems based on the max_connections: - The shared memory of 45 MB is too low using the default of 990 - The max_connection set to 598 is too low while the default of 990 is used Use the nwcm command max_connections=990 to increase the possible connections. See the formula in 3.4.2, “Environment variables” on page 134. Note The max_connections value is set to 990 as a default. Thus, the check for the related values is based on 990. See 3.4.3.7, “System parameters” on page 145. Figure 96 still shows a problem if we increased the shared memory to 85 MB and the max connections to 990 within NetWare. 172 Debugging UNIX Applications on OS/390 BPXF024I (HOERNER) SERVER-4.10-13: No valid license files were found. 638 Authorizing 990 licensed connections. BPXF024I (HOERNER) Getting shared memory of 85983232 BPXF024I (HOERNER) shmAttachPoint = 62300000 BPXF024I (HOERNER) Initializing server information lib. BPXF024I (HOERNER) SERVER-4.10-67: The virtual process identifier 642 table was not correctly setup. BPXF024I (HOERNER) SERVER-4.10-63: The NetWare server is unable to 643 complete initialization and is shutting down. BPXF024I (HOERNER) Services are down till TimeSync BPXF024I (HOERNER) Returning from the IOCTL NMXP_SHUTDOWN BPXF024I (HOERNER) Services are down till LockManager BPXF024I (HOERNER) Services are down till File System BPXF024I (HOERNER) BPXF024I (HOERNER) CleanUp successful Figure 96. Example of the nwserver command Figure 97 still shows a problem if we increased the shared memory to 150 MB and increased the IPCSHMMPAGES to 524288 (see 3.4.3.7, “System parameters” on page 145). :::::::::::::::::::::::::::::::::::::::::::::: BPXF024I (HOERNER) SERVER-4.10-11: Shared memory size is 150000000 763 bytes. BPXF024I (HOERNER) SERVER-4.10-608: License file processing complete. 764 Total number of licensed connections is 0. BPXF024I (HOERNER) SERVER-4.10-13: No valid license files were found. 765 Authorizing 990 licensed connections. BPXF024I (HOERNER) Getting shared memory of 150994944 BPXF024I (HOERNER) shmget returned 79, errno2=07200316 BPXF024I (HOERNER) SERVER-4.10-14: The NetWare server is unable to 768 create a shared memory segment. Figure 97. Example issue of a nwserver command SET OMVS=GU IEF196I IEF237I 0CC1 ALLOCATED TO IEFPARM IEF196I IEF237I 25E6 ALLOCATED TO SYS00183 IEF196I IEF237I 25E6 ALLOCATED TO SYS00184 IEF196I IEF237I 25E6 ALLOCATED TO SYS00185 IEE252I MEMBER BPXPRMGU FOUND IN SYS1.PARMLIB BPXI006I ERROR IN PARMLIB MEMBER BPXPRMGU ON LINE 727, 778 POSITION 25. INPUT PARAMETER VALUE IS OUT OF THE ALLOWED RANGE OF 1 TO 524287. A SYSTEM VALUE OF 35600 IS USED. DETECTING MODULE IS BPXIPMZ1. INPUT LINE: IPCSHMMPAGES (524288) BPXO031I ERRORS IN PARMLIB MEMBER=BPXPRMGU 779 REFER TO THE HARD COPY LOG. SET OMVS COMMAND FAILED. IEF196I IEF285I SYS1.SYSPROG.PARMLIB Figure 98. Result of the failing SET OMVS command Novell Network Services 173 Solution: Decrease the IPCSHMMPAGES in the BPXPRMxx Parmlib member to 524200 for example. See 3.4.3.7, “System parameters” on page 145. For more information see APAR OW39726. • Problems during login from a client Figure 99 shows a problem during login from a Novell client. Figure 99. Unsuccessful LOGIN Problem Reason: The OSA-2 card is plugged into a FENET ring and the PC with the Novell client used a token ring card and the OSA card does NOT support token ring connection. Solution: Use a FENET card in the PC to connect to the host instead of the TR card. This symptoms are shown also if the FENET cable is longer than 100 m as a max. Solution: put a bridge, a router or a repeater in between to return/transfer the signal or use a shorter cable between the host and the client PC. 3.6.5 Helpful commands In this section we describe some helpful commands to analyze the environment by displaying the status of the parts involved. 3.6.5.1 OS/390 console commands D OMVS, A=ALL Display all the USS-related information. 174 Debugging UNIX Applications on OS/390 Figure 100 shows a example of a /D OMVS, A=ALL command. D OMVS,A=ALL BPXO040I 12.36.57 DISPLAY OMVS 474 OMVS 000F ACTIVE OMVS=(GU) USER JOBNAME ASID PID PPID STATE START CT_SECS OMVSKERN BPXOINIT 00FB 1 0 MR 15.55.04 1.282 LATCHWAITPID= 0 CMD=BPXPINPR SERVER=Init Process AF= 1 MF=00000 TYPE=FILE TCPIPMVS TCPIPMVS 0039 16777218 1 MR 15.56.42 94.787 LATCHWAITPID= 0 CMD=EZBTCPIP TCPIPMVS TCPIPMVS 0039 16777219 1 1R 15.56.46 94.787 LATCHWAITPID= 0 CMD=EZBTMCTL HOERNER INRTIME 0047 301989917 721420314 1F 11.44.46 4.181 LATCHWAITPID= 0 CMD=timerd (NWS Timer Daemon) ......... ./.. SERVER=NETWARE AF= 0 MF=00000 TYPE=SFDS HOERNER INRSKUL 004E 234881054 268435479 1DI 11.44.56 .148 LATCHWAITPID= 0 CMD=dsskulker (NWS DS Skulker Daemon) ...... HOERNER INRSERV6 004F 654311448 251658278 1FI 11.45.22 .347 LATCHWAITPID= 0 CMD=nwserver (NWS Daemon) SERVER=NETWARE AF= 0 MF=00000 TYPE=SFDS HOERNER 0000 100663321 1 1L 11.44.28 .001 HOERNER INRSERV2 004B 721420314 1 1WI 11.44.46 .053 LATCHWAITPID= 0 CMD=nwserver (NWS Daemon) SERVER=NETWARE AF= 8 MF=00000 TYPE=SFDS Figure 100. OMVS, A=ALL D NET,TRL Display the status of the Transport Resource List Elements (TRLEs). Figure 101 shows a example of a /D NET,TRL command. D NET,TRL IST097I DISPLAY ACCEPTED IST350I DISPLAY TYPE = TRL 194 IST1314I TRLE = IUTL2100 STATUS IST1314I TRLE = ISTT6463 STATUS IST1314I TRLE = INRT1100 STATUS IST1314I TRLE = MPC0210 STATUS IST1454I 6 TRLE(S) DISPLAYED IST314I END = = = = ACTIV ACTIV ACTIV ACTIV CONTROL CONTROL CONTROL CONTROL = = = = TCP XCF MPC MPC Figure 101. D NET,TRL D NET,E,ID=INRT1100 Figure 102 show the status of the defined TRL id INRT1100. See 3.4.3.5, “Preparing the FENET OSA2 for IPX protocol” on page 140. Novell Network Services 175 D NET,E,ID=INRT1100 IST097I DISPLAY ACCEPTED IST075I NAME = INRT1100, TYPE = TRLE 327 IST486I STATUS= ACTIV, DESIRED STATE= ACTIV IST087I TYPE = LEASED , CONTROL = MPC , HPDT = YES IST1715I MPCLEVEL = HPDT MPCUSAGE = SHARE IST1577I HEADER SIZE = 4092 DATA SIZE = 32 STORAGE = ***NA*** IST1221I WRITE DEV = 2321 STATUS = ACTIVE STATE = ONLINE IST1577I HEADER SIZE = 4092 DATA SIZE = 32 STORAGE = DATASPACE IST1221I READ DEV = 2320 STATUS = ACTIVE STATE = ONLINE IST1500I STATE TRACE = OFF Figure 102. D NET,E,ID=INRT1100 D U,,,2320,2 Figure 103 shows the correct status of the defined units. See 3.4.3.5, “Preparing the FENET OSA2 for IPX protocol” on page 140. IEE457I 14.04.43 UNIT STATUS 331 UNIT TYPE STATUS VOLSER 2320 OSA A-BSY 2321 OSA A-SPD VOLSTATE Figure 103. Display unit command 3.6.5.2 NNS server utilities In this section we describe some of the server utilities and their meanings and show outputs of some key administration utilities issued as a command from the /usr/lpp/netware/bin directory in the ISHELL. For a complete list of utilities, refer to Novell Network Services for OS/390 Utilities Reference, SA22-7318. • dsinstall—install and remove Novell Directory Services (NDS) from a server • drouter—list network information known to router, for example, networks, number of hops to a network, best path • dsrepair—repair records, schema, bindery objects and external objects in NDS database • dsadmin—nwcm, display the NDS tree, set synch intervals • ipxinfo—display IPX socket and LAN statistics kept by IPX driver • ndsbackup—backup master replicas Note: Disaster-recovery utility, should not be primary backup mechanism used. • ndsrestore—restore master replicas (should not be primary restore mechanism) • npsd—used by startnps to start IPX protocol stack, initialize drivers, and daemons • nwcm—used to view and configure server values, view device, adapter, volume information 176 Debugging UNIX Applications on OS/390 • nwdiscover—optional, to discover network configuration information and update server values • nwdump—view NEMUX device status information • nwengine—view total number of currently running NetWare engines • nwipadmin—view and configure NCPS parameters for NWIP • nwlicense—add or delete user licenses on the server (file/print serving) • nwsapinfo—view information maintained in the server information tables • nwsaputil—start or stop advertising a local server, or query contents of "sapouts" file (servers advertised with permanent option) • nwserver—boots NWS on UNIX system, reads NWS configuration from the configuration file, mounts all volumes listed in the voltab file, starts all other NWS processes, and processes asynchronous events • nwserverstatus—check the status of the server • nwshut—bring down the NetWare server • nwvm—view/modify information in the voltab file • ripinfo—view router driver statistics from the protocol stack • rrouter—reset/rebuild IPX router table by requesting route information from other servers • spxinfo—view statistics for the SPX driver • startnps—starts npsd, which initializes the IPX protocol stack • startsapd—start the Service Advertise Protocol (SAP) daemon • statnps—use in a script to check the status of the NetWare protocol stack • stopnps—stop the NetWare protocol stack • stopsapd—stop the SAP daemon • track—start/stop display of incoming and outgoing SAP packets • tsadmin—display time synchronization information, restart time synchronization $ nwserverstatus Figure 104 through Figure 106 on page 178 show different statuses of the Novell server on OS/390 via the nwserverstatus command. HOERNER @ SC64:/>nwserverstatus shmget returned 81, errno2=07200306 NetWare server NWREDPROJECT is down. Figure 104. The Novell server is not up Novell Network Services 177 HOERNER @ SC64:/>nwserverstatus NetWare server NWREDPROJECT is coming up. Figure 105. The Novell server is coming up HOERNER @ SC64:/>nwserverstatus NetWare server NWREDPROJECT is up. Figure 106. The Novell server is up ipxinfo Use at the UNIX prompt to display the IPX(tm) socket and LAN statistics kept by the IPX driver. Use this command in adition to the nserverstatus command to verify that the server is up correctly sending and receiving packets. Figure 107 shows an example of ipxinfo information. HOERNER @ SC64:/>ipxinfo IPX Socket Multiplexor (ISM) Version: 4.10 IPX LAN Router Version: 4.10 IPX LAN Router Statistics: Information about packets received from the LAN(s) 0 Packets with DLPI header too small, dropped 0 Packets not DLPI data type, dropped 0 Data IPX packets coalesced 50996 Data size trimmed to match IPX data size 0 IPX/NetBIOS packets routed to other LAN(s) 0 IPX/NetBIOS packets that have reached route limit, not routed 89839 Total IPX data packets sent to a LAN or ISM 85052 Total IPX data packets received from applications Figure 107. Ipxinfo example startnps—initializes NetWare protocol stack (IP/IPX) For more information see 3.5.2, “Server installation” on page 148. nwdiscover—optional, determines IPX network characteristics For more information see 3.4.3.6, “Network discovery” on page 143. nwcm—configures server variables nmcm -v ’nwconfig parm’ —view the actual settings For more information about the nwcm parameters see Novell Network Services for OS/390 Utilities Reference, SA22-7318. For more information see 3.4.3.4, “LAN numbers” on page 139, 3.4.3.7, “System parameters” on page 145, and 3.5.2, “Server installation” on page 148. 178 Debugging UNIX Applications on OS/390 nwserver—brings up the NetWare Services engine For more information see 3.5.2, “Server installation” on page 148, Figure 74 on page 152, Figure 75 on page 153, Figure 95 on page 172, Figure 96 on page 173, and Figure 97 on page 173. dsinstall—required for first bringup, creates NDS tree For more information see, Figure 76 on page 153. nwshut—brings down NetWare Services engine For more information see 3.6.3.6, “Server recovery—hangs” on page 170. stopnps—brings down NetWare protocol stack For more information see 3.6.3.6, “Server recovery—hangs” on page 170 For more information about the listed commands and others see Novell Network Services for OS/390 Utilities Reference, SA22-7318. 3.6.5.3 Novell client workstation utilities In this section we describe some of the workstation utilities and their meanings. For a complete list of utilities, refer to Novell Network Services for OS/390 Utilities Reference, SA22-7318. • ATOTAL—totals accounting charges on a network • COLORPAL—change color of menu elements • CX—view/change context, view tree structure objects/containers • FILER—manage files/directories • FLAG—view/modify directory attributes, modify file/directory owner • LOGIN—log in to server to access network, run login script • LOGOUT—exit the network or log out from a server • MAP—view/change drive mappings • NCOPY—copy files/directories to different network locations • NCUPDATE—update net.cfg files with new name context • NDIR—view file/directory/volume information • NETADMIN—view/manage NDS objects/properties • NETUSER—manage various network tasks • NetWare Administrator—perform administration tasks such as FILER, NETADMIN, PARTMGR, PCONSOLE (has GUI interface) • NLIST—view/search on objects and object properties • NMENU—access customized menus • NPATH—view NetWare search sequence for file • NVER—view version information for workstation and servers • NWXTRACT—extract files from diskette or CD-ROM to network • PARTMGR—manage partitions and replicas Novell Network Services 179 • PURGE—permanently remove deleted files from workstation • RENDIR—rename a directory • RIGHTS—view/modify user/group rights for a file/directory/volume • SEND—send/receive network messages • SETPASS—change user password • SETTTS—view/modify locks for Transaction Tracking System (TTS) • SYSTIME—synchronize workstation date/time with server • UIMPORT—add objects to directory tree from ASCII import file • WHOAMI—view connection information • WSUPDATE—update a file on multiple drives and subdirectories • WSUPGRD—upgrade IPX driver to corresponding ODI driver For more information about the listed commands and others see Novell Network Services for OS/390 Utilities Reference, SA22-7318. 3.7 Getting NetWare client software For a PC client to communicate with the Novell Network Services server code, the NetWare client software must be installed on the client. You can use the client software provided with your operating system, or you can use the software provided by Novell. IBM suggests that you download the client software from the Novell Web site: http://www.s390.ibm.com/oe/samples/oectrace.html This will ensure that you are using the latest Novell client code. Look under the topic NetWare Clients and obtain the client software for your operating system. Create diskettes or use the network facilities to install the client software. Figure 108 on page 181 shows the list of the NetWare page to download the client code. We downloaded the newest WIN/NT client code. 180 Debugging UNIX Applications on OS/390 Figure 108. Download the client code 3.8 Emergency recovery In the event of a system crash, you must have a written record of your network organization. Use the worksheets in 3.9, “Installation Worksheets” on page 183 to help you reinstall your system. The steps needed to recover Novell Directory Services on your system depend on server factors that must be considered to avoid creating problems in other servers in your network. For information on using dsrepair, refer to "Managing the Directory Services Tree" in Novell Network Services for OS/390 Supervising the Network, SA22-7317. Backup and recovery of the NDS database If there should be a failure of the Novell Network Services for OS/390 server, there are two recovery scenarios for which a customer should be prepared: 1. There are other servers in the network, holding Master or Read/Write replicas also being kept on the Novell Network Services for OS/390 server. 2. The Novell Network Services for OS/390 server is the only one holding the NDS tree, or there is a network-wide failure where all replicas are corrupted or lost. Note The second scenario, while less likely in a multiserver environment, should still be planned for, so appropriate backup images of the NDS database are taken, and later made available as necessary. Novell Network Services 181 • Following are the recovery scenarios for each case. - Other replicas are available The first thing to determine is whether the Novell Network Services for OS/390 server can be restarted without requiring a rebuild (dsinstall). Once the Novell Network Services for OS/390 server is restarted, the administrator should run a dsrepair Full Unattended Repair. After this is done, check that users can log in and access resources for replicas held on the server. Additionally, the operator should check for other servers in the network using the dsrepair utility (Advanced Operations => Replica and Partition Operations => View Replica Ring). In the case where users can log in, the other servers are visible, and there are no error messages, no further actions need be taken. If the replica data has been corrupted on the Novell Network Services for OS/390 server, as indicated by error messages or the inability to log in or access the data, then the server will need to go through dsinstall and be reconnected to the tree. The steps to take are as follows: + If the Novell Network Services for OS/390 server was holding any Master replicas, then for each of those partitions, another server holding a Read/Write replica will need to be promoted to Master. This can be done on an IntraNetWare server using NDSMGR, or on a nonnative server using NetWare Administrator or PARTMGR. Refer to Novell Network Services for OS/390 Utilities Reference, SA22-7318, for details. + Bring up the Novell Network Services for OS/390 server, using the dsinstall utility, and choosing option 3, to be inserted into an existing NDS tree. + When dsinstall completes, add the replicas formerly kept on the Novell Network Services for OS/390 server back as Read/Write replicas, using NetWare Administrator or PARTMGR (see Novell Network Services for OS/390 Utilities Reference, SA22-7318, for details). + Run a dsrepair Full Unattended Repair. + If the Novell Network Services for OS/390 server was holding any Master replicas, the Read/Write replicas just created can be promoted back to Master using either NetWare Administrator or PARTMGR. • Other replicas are not available In the case where no replicas exist for the NDS database, a previously backed-up image of the database must be restored. Assuming the OS/390 NDS database information was backed up, the Novell Network Services for OS/390 server can simply be restarted without need to run dsinstall. If the Novell Network Services for OS/390 server is the only server holding the tree, no further action is necessary. If other servers had replicas of partition information, then they will have to be rebuilt, and the replicas recreated, along the same lines as rebuilding the Novell Network Services for OS/390 server described under "Other replicas are available". All NDS data is stored in the /etc/netware/_netware directory. This could be backed up at a minimum. For a more complete backup, the customer-modified data—configuration files, device files, log files—are stored in the /etc/netware directory. In either case, these files and directories can be backed up using your current backup mechanism. Note that to avoid backing up 182 Debugging UNIX Applications on OS/390 incomplete data, the Novell Network Services for OS/390 server should be shut down before backing up the data. As an example of a recovery scenario, use the cpio utility to back up NDS data to another HFS. Within OMVS, change to the /usr/netware directory. Then issue: ls . | cpio -o >arch This command will concatenate all the appropriate files into the output file "arch". This file can then be copied to another HFS or other storage medium. To restore the NDS database files, the concatenated file ("arch" in the example) needs to be copied back into the /usr/netware directory. The Novell Network Services for OS/390 server must not yet be started, and there should not be any other directories or files in the /usr/netware directory. After copying, issue the command: cpio -i -I arch This will recreate the NDS files. After deleting the concatenated file, the Novell Network Services for OS/390 server can be started. The frequency of running installation backup procedures should be determined based on the critical nature of the data, and the number of servers holding that data. 3.9 Installation Worksheets This section contains the NetWare Services Installation Worksheet and the Novell Directory Services Replication Worksheet. Photocopy as needed and complete them. They are valuable resources should you need to reinstall your system. Make sure you keep them up to date. Required Configuration server_ name ipx_internal_network ts_type Network Configuration lan_1_adapter lan_4_adapter lan_1_network lan_4_network lan_1_frame_type lan_4_frame_type lan_2_adapter lan_5_adapter lan_2_network lan_5_network lan_2_frame_type lan_5_frame_type lan_3_adapter lan_6_adapter lan_3_network lan_6_network lan_3_frame_type lan_6_frame_type Novell Network Services 183 Optimal Configuration 3.10 Documentation You can find documentation about Novell Network Services (NNS) on OS/390 at the following sites: On the Internet at: http://www.s390.ibm.com/marketing/g2219072.html • NNS books on the Internet: http://www1.s390.ibm.com/os390/bkserv/novell.html 184 Debugging UNIX Applications on OS/390 Chapter 4. DCE/DFS In this chapter we share some hints and tips for the DCE/DFS environment. 4.1 Distributed Computing Environment (DCE) overview What is OS/390 UNIX System DCE? The OSF Distributed Computing Environment (DCE) is a set of services that make up a high-level, coherent environment for developing and running distributed applications. It is based on a client/server model, where a client requests a service from a server. DCE provides a set of services that make this interaction possible. The four core services in DCE are Remote Procedure Call, Directory Service, Security Service, and Distributed Time Service. The elements of these services run as long-running processes of daemons. OS/390 UNIX System Services DCE offers the DCE services that enable an OS/390 host to operate as a member of a DCE cell. OS/390 UNIX System Services DCE includes the following daemons: • DCE daemon • Security server daemon • CDS Advertiser daemon • CDS Clerk daemon • CDS daemon • DTS Null Time Provider daemon • DTS daemon • Audit daemon • Password Management daemon • GDA daemon The following sections will provide a brief description about DCE installation and a complete description about error handling and getting cell informations. 4.1.1 DCE base service The following figure gives a brief overview of the services available with OS/390 DCE: © Copyright IBM Corp. 1999 185 Figure 109. OS/390 DCE architecture The following information is provided in SYSTEMPAC Installation Guide. 4.1.1.1 Update BPXPRMxx parmlib member Make the appropriate changes in parmlib member BPXPRMxx for the UNIX System Services customization. Detailed steps to customize parmilb member BPXPRMxx for OS/390 UNIX System Services Application Services are defined in OS/390 UNIX System Services Planning, SC28-1890. BPXPRMxx considerations • DCE Base Services MAXFILEPROC(256) • MAXTHREADTASKS(500) • MAXTHREADS(500) Verify that both the AF_UNIX and AF_INET socket file systems are specified to be initialized. • For AF_UNIX, MAXSOCKETS(2000) • For AF_INET, MAXSOCKETS(10000) For specific information about AF_UNIX and AF_INET, refer to OS/390 MVS Initialization and Tuning Guide, SC28-1751, and OS/390 UNIX System Services Planning, SC28-1890. 186 Debugging UNIX Applications on OS/390 4.1.1.2 PROCLIB member considerations The following procedure libraries were copied to the CPAC.PROCLIB data set, since they must be added to a PROCLIB concatenation accessible to JES. PROCLIB concatenation: •DDNAME=SEUVPRC • Element= DCE Base Services Note This data set contains ALIASes, which must also be accessible. 4.1.1.3 DCE base services IDL PROC customization considerations If you intend to use the IDL Compiler under TSO, you may optionally make the following changes to the IDL PROC found in the SEUVPRC library: • Change DCEPFX to match the high-level qualifier under which you have installed the DCE libraries. • Change LNGPFX to match the high-level qualifier that you have used for the SCEEH.H and SCEEMSGP libraries. 4.1.1.4 Update ISPF Command Table ISPTCM If you add any of the following to the LPA list, or to the modified link pack areas, you must add these command names to the ISPF Command Table (ISPTCM): EUVBCONF EUVCCP EUVDCECP EUVRCP EUVRUGEN EUVSADMIN EUVSAED EUVSCDB EUVSEDB EUVSLGN EUVSKDST EUVSKINI EUVSKLST EUVRIDL EUVSRED EUVTCP For further information and instructions, see OS/390 Interactive System Productivity Facility (ISPF) Planning and Customizing, SC28-1298. 4.1.1.5 Define DCEKERN to RACF To define DCEKERN to RACF you must create the following definitions with these exact names: • Define DCEGRP as a group. • Define DCEKERN as a user. • Define DCEKERN as a started task. SystemPac has already defined DCEKERN to RACF for you. Please refer to CPAC.SAMPLIB(RACFOE) for the detailed definitions that were made. For RACF, the following commands were used to make the definitions to the STARTED class: ADDGROUP DCEGRP SUPGROUP(SYS1) OMVS(GID(2)) ADDUSER DCEKERN OMVS(HOME(/opt/dcelocal/home/dcekern/) UID(0)) DFLTGRP(DCEGRP) AUTHORITY(CREATE) UACC(ALTER) RDEFINE STARTED DCEKERN.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) RDEFINE STARTED DCESECD.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) RDEFINE STARTED DCECDSD.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) RDEFINE STARTED DCEDTSTP.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) DCE/DFS 187 RDEFINE STARTED DCEAUDD.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) RDEFINE STARTED DCEPWDD.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) RDEFINE STARTED DCEGDAD.** STDATA(USER(DCEKERN) GROUP(DCEGRP)) SETROPTS RACLIST(STARTED) REFRESH In addition to the STARTED class definitions, the RACF Started task table was also updated with the following definitions: DCEKERN DC CL8’DCEKERN’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCESECD DC CL8’DCESECD’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCECDSD DC CL8’DCECDSD’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCEDTSTP DC CL8’DCEDTSTP’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCEAUDD DC CL8’DCEAUDD’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCEPWDD DC CL8’DCEPWDD’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted DCEGDAD DC CL8’DCEGDAD’ Started Task Name DC CL8’DCEKERN’ Userid DC CL8’DCEGRP’ Group DC X’00’,XL7’00’ Neither Privileged nor Trusted For details, see the following: • Data Set CPAC.SAMPLIB(RACFOE) • OS/390 UNIX System Services Planning, SC28-1890 • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 4.1.1.6 Define the DCE administrator user ID to RACF To define the DCE administrator user ID to RACF, you must define DCEADM as a user. For RACF, use the following commands. Replace parameters with any system-specific TSO information required on your system. MKDIR ’/u/dceadm/’ MODE(7,5,5) ADDUSER DCEADM OMVS(HOME(/u/dceadm) PROGRAM(/bin/sh) UID(0)) DFLTGRP(DCEGRP) AUTHORITY(CREATE) UACC(NONE) TSO(-parameters-) SystemPac has already created the DCEADM user ID in the RACF database. 188 Debugging UNIX Applications on OS/390 For details, see the following: • Data Set CPAC.SAMPLIB(RACFOE) • OS/390 UNIX System Services Planning, SC28-1890 • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 4.1.1.7 Create the DCEKERN.START.REQUEST resource profile To successfully run the DCE configuration, SystemPac made the following changes to your delivered RACF database. • Define the following FACILITY class resource profiles to your security program. • Activate the FACILITY class. • Permit DCEADM and DCEKERN update access to the resources defined below. For RACF, use the following commands: RDEFINE FACILITY DCEKERN.START.REQUEST UACC(NONE) RDEFINE FACILITY DCESECD.START.REQUEST UACC(NONE) RDEFINE FACILITY DCECDSD.START.REQUEST UACC(NONE) RDEFINE FACILITY DCEDTSTP.START.REQUEST UACC(NONE) RDEFINE FACILITY DCEAUDD.START.REQUEST UACC(NONE) RDEFINE FACILITY DCEPWDD.START.REQUEST UACC(NONE) RDEFINE FACILITY DCEGDAD.START.REQUEST UACC(NONE) PERMIT DCEKERN.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCESECD.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCECDSD.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCEDTSTP.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCEAUDD.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCEPWDD.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) PERMIT DCEGDAD.START.REQUEST CLASS(FACILITY) ID(DCEKERN DCEADM) ACCESS(UPDATE) For details, see the following: • Data Set CPAC.SAMPLIB(RACFOE) • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 DCE/DFS 189 4.1.1.8 Update the eNetwork Communications Server IP profile DCE requires use of the eNetwork Communications Server IP port 135. Ensure that data set hlq.PROFILE.TCPIP does not reserve port 135 for another application. Refer to TCP/IP for MVS: Customization and Administration Guide, SC31-7134, for information about the PORT statement and data set hlq.PROFILE.TCPIP. 4.1.1.9 OS/390 2.7 DCE Application Support To complete the installation process relink load module ASUVSC for CICS. Relink Load Module ASUVSC for CICS DCE Application Support load module ASUVSC needs to be rebuilt with the code from your existing SDFHEXCI (CICS) library. The SDFHEXCI DDDEF entry was redefined based on the variable entry you entered for installed CICS (if you have it) and run report CALLLIBS to generate the job that will relink the module. The following is a sample JCL that you may use to generate the CALLLIBS report. For more information about the SMP/E REPORT CALLLIBS command, refer to OS/390 SMP/E Reference, SC28-1806. //CICSLINK JOB <job card parameters> //STEP1 EXEC PGM=GIMSMP //SMPCSI DD DISP=SHR,DSN=your.SMP/E.zone.csi //JOBCDD DD DISP=SHR,DSN=your.dataset.with.the.job.card.member //SMPPUNCH DD DISP=SHR,DSN=the.generated.link.jcl.dataset //SMPCNTL DD * SET BDY(GLOBAL). REPORT CALLLIBS (SDFHEXCI) /* REPORT CALLLIBS */ ZONES(your_target_zone) JOBCARD(JOBCDD,job_card_member) 4.1.2 Configuring a cell Here is some helpful information about a DCE cell. 4.1.2.1 What is a DCE cell The basic unit of DCE operation is the cell, which is a logical grouping of users, computers, data, and other resources that share either a common purpose or a common level of trust. The cell provides security, administration, and boundaries naming for users and resources within that cell. The DCE services are managed within the context of a cell. The following figure illustrates a DCE cell: 190 Debugging UNIX Applications on OS/390 Figure 110. DCE cell Cells can vary in size from a cell with a single machine to a cell with thousands of machines. The DCE services were designed to scale up to meet this demand. A cell must have at minimum of: • One Security Server • One Cell Directory Server (CDS) • One Distributed Time Server The typical daemon configuration in a cell is shown in Figure 111: Figure 111. DCE daemons in the cell DCE/DFS 191 4.1.2.2 Configure the cell Before you start to configure the DCE cell provide the following information: • Cell Admin ID • Cell Admin Password • Cell Name • TCP/IP Name • Internet Addr • Security Host Name • Cell Directory Host Name • Directory Time Server Names OS/390 systems provide panels to configure the cell. Please refer to OS/390 DCE Configuring and Getting Started, SC28-1583, for more information. 4.1.3 DCE start, stop, and debug hints More detailed information about DCE is documented in the following sections: 4.1.3.1 Start and stop of DCEKERN and ist daemons To start the DCEKERN address space and all ist daemons, enter the S DCEKERN command, either from a system console or from any authorized console. If, for test purposes, or other reasons, you want to start DCE without starting its daemons (for example, if you want to disable DCE after a problem), start DCEKERN as follows: S DCEKERN, PARM='-NODCE' Be sure to enter the parameter exactly as shown. This is equivalent to a local start of DCE. To stop the DCEKERN address space, simply enter: P DCEKERN To ask about the status of DCEKERN and all its daemons, enter the following command: F DCEKERN,QUERY ALL For more detailed information refer to OS/390 DCE Administration Guide, SC28-1584. 4.1.3.2 Ways of starting the OS/390 USS DCE daemons OS/390 DCE daemons are started automatically or manually, depending on the situation and on the system setup. You can start the daemons: • When running the DCE configuration program DCECONF Using the MODIFY DCEKERN operator command, you can start the daemons: • During a System IPL, if DCEKERN is among the tasks that are started automatically • By an Automated Operations product 192 Debugging UNIX Applications on OS/390 To start the DCE daemons manually, follow this sequence: F F F F F F F DCEKERN, DCEKERN, DCEKERN, DCEKERN, DCEKERN, DCEKERN, DCEKERN, START START START START START START START DCED SECD CDSADV CDSCLERK DTSTP DTSD AUDITD For example, to start the CDSADV daemon successfully, the DCED daemon must already be up and running. To start all daemons collectively (and in the right sequence) enter: F DCEKERN, START ALL To stop all daemons, enter the following: F DCEKERN, STOP ALL If you want to stop only a specific daemon, enter: F DCEKERN, STOP daemonname The path name to the daemon configuration file is: /opt/dcelocal/etc/euvpdcf This file reflects the configuration status as well as the startup options of the daemons that run in the DCEKERN address space. Detailed information about how to start and stop daemons can be found in: OS/390 DCE Administration Guide, SC28-1584 4.1.3.3 MVS/DCE debug tracing MVS/DCE debug tracing is part of the overall RAS Message Logging Services. The traces provide DCE-specific information about events that occur within the DCE components. For each DCE component you can specify the level and type of output you wish to see. Valid values for the debug levels range from 1 to 9. The general guideline is that the higher the level the more detailed the information produced by the trace. Unless you are familiar with how a particular component has implemented debug levels, you should probably indicate a level of 9 to get as much information as possible. Specify a level of 0 to indicate that you do not want tracing for that component. How to stop and start debug tracing In the envvar file for DCEKERN as well as for each of the daemons there is a variable _EUV_SVC_DBG_MSG_LOGGING=n, where n=0 or 1. A value of 1 indicates that debug tracing is to be done. To change this variable you can use the panel driven UNIX System Services Ishell. Simply changing the value is not enough, you also need to stop and start the particular daemon for which you wish to produce trace output. There is a set of associated environment variables that DCE/DFS 193 provide component specific settings for producing debug trace output. The default settings, as provided in the envar files are the following: _EUV_SVC_MSG_LOGGING=CONSOLE_LOGGING _EUV_SVC_DBG_MSG_LOGGING=0 _EUV_AUTOLOG=NO SVC_AUD_DBG=*.9:STDOUT:-SVC_CDS_DBG=*.9:STDOUT:-SVC_DHD_DBG=*.9:STDOUT:-SVC_DTS_DBG=*.9:STDOUT:-SVC_PLT_DBG=*.9:STDOUT:-SVC_RPC_DBG=*.9:STDOUT:-SVC_SEC_DBG=*.9:STDOUT:-SVC_SED_DBG=*.9:STDOUT:-_EUV_FTRACE=0 TZ=MEZ-1MSZ-2,M3.5.0,M10.5.0/03:00:00 NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/En_US.IBM-1047/%N LANG=En_US.IBM-1047 You can find the envvar file name in the startup file for daemons under: /opt/dcelocal/etc/euvpdcf copied from /usr/lpp/dce/etc/euvpdcf. You can direct the debug trace output to STDOUT, STDERR, or a file name. Each debug entry has two parts: The default data and the data unique to the component. Each entry will start with the default data which includes: • TCB address • Thread ID • Process ID • Component • Subcomponent • Name of the routine making the debug entry For more detailed information please call your support center. 4.1.3.4 MVS/DCE function trace The MVS/DCE function trace is simply a trace of all the DCE C subroutine calls. Note that function traces are also done for any C Program compiled with TEST (NONE) option. When Language Environment (LE) detects an entry or an exit from a C language subroutine call, LE will first determine if the called routine is a DCE C function. For such functions LE will call the corresponding DCE code. The following information is available in a function trace entry: • TCB address • Thread ID • Process ID • Programming level for the function • Direction of the call 194 Debugging UNIX Applications on OS/390 • The name of the function • Return code for the function How to start and stop function tracing Function tracing is controlled by the environment variable _EUV_FTRACE. Setting this variable to 1 will enable function tracing. The directory names for the daemons are: cdsadv cdsclerk dtsd sec_clientd rpcd Function trace output is directed to STDOUT. You may, of course, redirect your output to a file as well. For more detailed information please call your support center. 4.1.4 How to produce a dump DCE users may find themselves in situations where they find that DCE as such (DCEKERN) and/or DCE applications has stopped working or is looping. To find out whether the application hangs or is looping start by going into the SDSF Display Active panel. A task that is in a loop should show a very high percentage of CPU utilization under the heading CPU% on the screen. A hang or wait situation would normally be indicated by a swapped out indication in the pos field. However, DCEKERN itself is mostly defined as non-swallowable which means you would have to watch the address space for a while to determine if it uses CPU or performance I/O operations. In any case we would normally suggest to dump the DCEKERN ASID, the UNIX System Services ASID and the TSO/E user address space. You can accomplish this with the following commands: Table 33. DCE Dump commands Command Description /d d To check whether dump data sets are available /dd clear,dsn=nn If necessary, clear dump data set (dsn=nn or all) /d d,o To check dump options /dump comm=(dump title) Issue your dump command /yy,ASID=(aa,bb,cc),END Where yy is the reply ID and aa,bb,cc are the address space IDs in hex How to dump the UNIX System Service address space and its data spaces is described in Chapter 1, “OS/390 UNIX System Services” on page 1. 4.1.5 How to get a trace output from DCEKERN What about extracting the output from the JES spool to read it at your leisure on your workstation or using ISPF browse? What you really need is a way to copy the log to a data set even if the job is not completed. DCE/DFS 195 Sure enough, you can do this from SDSF. What you will end up getting is a complete job log, including everything for all daemons. This is okay since you can then go back and trim it down to the portion you need to worry about. Here is how to do it: 1. In SDSF display the active users (choose da, or in ISPF panel sd.da) 2. Allocate a data set using the xd prefix command in SDSF. Put the cursor next to any active job and type xd and press Enter. Fill in the data set name, NEW for disposition, and the size of the data set on the panel that comes up. 3. Go to the job log from SDSF panel da (ISPF panel sd.da). From the panel, put an s next to the job for which you want to save the log. This will bring up the log. 4. On the command line, type print and press Enter. 5. A message in the upper right corner of the screen should indicate how many lines were printed. 6. Leave SDSF and use ISPF browse to look at the data. You can then FTP the data set to the target platform for further investigation. 4.1.6 DCE components DCE components include: • The DCE Security Service • The DCE Directory Service • The DCE Distributed Time Service • The DCE Remote Procedure Call • The Audit Service 4.1.6.1 The DCE Security Service The DCE Security Service is composed of three primary services—the Authentication Service, the Registry Service, and the Privilege Service. • The DCE Authentication Service component performs security functions that interact, for example, with DFS. It ensures that only certified users can log in and use the system, and it ensures that only authorized machines can communicate with other machines in the network. • The DCE Registry Service maintains a registry database. This database contains information similar to that stored in UNIX password files, such as users, groups, and account information. An account defines who can log in to the system and includes information about passwords and home directories. • The DCE Privilege Service component ensures that those who are using the system have the necessary permissions to perform the operations they request. These three services rely on the DCE Security Server, the secd process. The secd process runs all DFS server machines to provide access to the security services in the previous list. 196 Debugging UNIX Applications on OS/390 The DCE Security Service also includes the following two facilities: • The DCE Access Control List Facility provides an interface that allows users to set different levels of protection on file system objects, such as directories and files. Users can grant permissions to individuals, or they can define groups of users and grant permissions to the groups. They can then add individuals to a group to grant them the same permissions as the group or they can remove individuals from a group to restrict their permissions. An object’s ACL interacts with the protections provided by the object’s UNIX mode bits. • The DCE Login Facility initializes a user’s security environment in the DCE. It employs a user’s password to authenticate the user to the DCE Security Service, returning authentication information associated with the user. This information is used to authenticate the user to other distributed services such as those in DFS. 4.1.6.2 The DCE Directory Service The DCE Directory Service provides a consistent way to identify and locate people and resources, including files and directories, anywhere in a network computing environment. The Directory Service has three main components: • The Cell Directory Service (CDS) manages names within a cell. Each resource has a CDS entry that is unique within its local cell. • The Global Directory Service (GDS) supports the global naming environment between cells and outside of cells. GDS is an implementation of a directory service standard known as X.500. • The Global Directory Agent (GDA) is a "gateway" between the local and global naming environments. It supports cell interoperability by allowing CDS to access a name in another cell through either the GDS or the Domain Name System (DNS), a widely used global naming environment. Examples of CDS entries: Examples of CDS entries in both GDS and DNS global naming formats follow. The first example shows a CDS entry for a server machine in DNS format: /.../abc.com/hosts/fs1/self The second example shows a similar entry in GDS format: /.../C=US/O=abc/OU=Writers/hosts/fs1/self In addition to their global names, all CDS entries have a cell-relative name, or local name, that is usable only within the cell where the entry exists. The cell-relative name begins with the /.: prefix, which replaces the global cell name. An example of a CDS entry that uses the cell-relative prefix follows: /.:/hosts/fs1/self 4.1.6.3 The DCE Distributed Time Service The DCE Distributed Time Service (DTS) provides precise synchronization for system clocks in a network. For example, in DFS, clock synchronization is important for communication between client machines using the Cache Manager and server machines running the File Exporter and other server processes. DCE/DFS 197 Clients and servers must refer to a common time standard for communications to remain constant and for data to remain available. For example, each client that obtains tokens from a File Exporter has a lifetime with respect to that File Exporter. The client must renew its lifetime before it expires to ensure that its tokens are not revoked without its knowledge. If the client and the File Exporter disagree on the current time, the File Exporter may believe the client’s lifetime has expired before the client does. In this case, the File Exporter may revoke the client’s tokens without its knowledge. Clock synchronization is also important for replicated location databases and backup databases, which must be coordinated on different server machines. Machines that house replicated databases must remain in constant contact to ensure that each server has the current copy of the database. If the machines disagree on the time, they may believe they are no longer in touch with each other, in which case they can refuse all requests for information. Synchronization problems of this nature can result in unnecessary disruption of database access. 4.1.6.4 The DCE Remote Procedure Call The DCE Remote Procedure Call (RPC) facility provides communication between client and server machines in a network. For the Cache Manager on a client machine to send a request for data or other resources to a server machine, it must know how to locate the File Server machine in the network and how to communicate with it. The RPC requires the use of a binding handle for the File Server machine on which a file set resides. The binding handle includes the server machine’s network address, an identifier for the protocol used to communicate with the machine, and an endpoint (often a port number) for communication with the machine. It also contains user authentication information about a user who requests data. The Cache Manager uses this binding handle to communicate with the server machine. The same process is used to effect communication between different server machines. For example, DFS employs Ubik to synchronize copies of the Fileset Location Database and Backup Database. Instances of Ubik that coordinate the databaes on different server machines rely on RPCs to communicate with each other. Communication failures resulting from RPC problems can cause unnecessary disruption of database access. When a server process first starts, it registers its process endpoint with the rpcd process. The rpcd process running on a server machine provides the location information required by clients to communicate with sever processes running on the server machine. Note that in DCE RPC, rpccp is a program that, among other things, allows system administrators to administer and control rpcd on a machine. Most RPC administrative tasks, however, are performed automatically when the server first starts. The UUID facilities are another component of the DCE RPC employed by DFS and other DCE components. The commands and routines in the facility are used to generate Universal Unique Identifiers (UUIDs). The UUIDs are used to uniquely identify resources such as machines and processes. For example, the backup system uses UUIDs to identify the tape coordinator processes on machines that are used to back up data to tape. 198 Debugging UNIX Applications on OS/390 4.1.6.5 The DCE Audit Services Audit plays a critical role in distributed systems. Adequate audit facilities are necessary for detecting and recording critical events in distributed applications. Audit, a key component of DCE, is provided by DCE Audit Services. The DCE Audit Services have the following features: • An Audit daemon writes audit records based on specified criteria. • Application Programming Interfaces (APIs) can be used as a part of application server programs to record audit events. These APIs can also be used to create tools that can analyze the audit records. • An administrative command interface for the Audit daemon directs the daemon to select the events to be recorded according to specified criteria. This interface is accessed through the DCE control program (dcecp). • An event classification mechanism allows the logical grouping of events into sets to ease administration. • Audit records can be directed to logs or to the system console. For detailed information please refer to OS/390 DCE Administration Guide, SC28-1584. 4.2 Distributed File Service (DFS) What is DFS? A distributed computing environment involves many different systems working together to perform the same types of functions usually performed on one machine in a traditional computing environment. For example, in a distributed computing environment, one system (or component) can be responsible for login procedures and file protections; another can be responsible for providing a uniform way to name and view all objects in the environment. These components communicate through a computer network, providing system access to machines and users at different geographical locations. A distributed file system joins the file systems of individual machines into a single, global file system (filespecs) accessible to many machines. OSF (Open System Foundation) DCE employs the Distributed File System (DFS). Working with DFS is similar to working with the file system of your local machine. However, in DFS, you can access files stored on different machines in the computer network as easily as you can access files stored on your machine’s local disk. You do not need to know the physical location of a file, even though a given file can be stored on any machine in the network. Simply request a file by its DCE pathname, and DFS finds the correct file automatically. Groups of DFS users from different locations can share information and work together on the same files. By using DCE Access Control Lists (ACLs) you can prohibit certain users from accessing specific files or directories. This is one aspect of DFS that provides a secure computing environment. DFS is based on a distributed client/server model. In a client/server model, server machines store data that client machines can access. The DFS model is considered distributed because data stored on many different DFS server DCE/DFS 199 machines is potentially available to users on every DFS client machine in the DCE environment. 4.2.1 DFS installation 4.2.1.1 Update BPXPRMxx PARMLIB Member Add the following parameters to BPXPRMxx: FILESYSTYPE TYPE(DFSC) ENTRYPOINT(IOECMINI) PARM(’ENVAR("_EUV_HOME=/opt/dfslocal/home/dfscm")/ >DD:IOEDFSD 2>&1’) ASNAME(DFSCM) 4.2.1.2 PROCLIB member considerations The procedures needed to start the DFS started task are located in the target data set SIOEPROC. After updates to these procedures are made, the members listed below must be made available to the system by copying them to a procedure library which is in your JES procedure library concatenation. Table 34. DFS procedures Name Alias Description IOEP0001 DFS JCL that starts the DFS server IOEP0002 DFSCM JCL that starts the DFS client IOEP0003 DFSKERN JCL to run DFSKERN process in a separate address space See also OS/390 Distributed File Service Configuring and Getting Started, SC28-1722 for detailed reference. 4.2.1.3 Define DFS Server (DFS) and DFS Client (DFSCM) to RACF To define DFS to RACF, you must create the following definitions with these exact names: • Define DFSGRP as a group. • Define DFS as a user. • Define DFS as a started task. • Define DFSCM as a started task. SystemPac has already defined DFS to the RACF database using these definitions. Definitions were made to both the RACF Started Task Table (ICHRIN03) and the RACF STARTED Class. For details see CPAC.SAMPLIB(RACFOE). For RACF, the following commands were used: ADDGROUP DFSGRP SUPGROUP(SYS1) OMVS(GID(2)) ADDUSER DFS OMVS(HOME(/opt/dfslocal/home/dfscntl) UID(0)) DFLTGRP(DFSGRP) AUTHORITY(CREATE) UACC(ALTER) RDEFINE STARTED DFS.** STDATA(USER(DFS)) 1 200 Debugging UNIX Applications on OS/390 Note 1 The user ID DFS should not be enabled for DCE single sign-on. RDEFINE STARTED DFSCM.** STDATA(USER(DFS)) SETROPTS RACLIST(STARTED) 2 Note 2 The RACF Started Task table (ICHRIN03) was updated with the following: DFS DFSCM DC DC DC DC DC DC DC DC CL8’DFS’ Started Task Name CL8’DFSGRP’ X’00’,XL7’00’ CL8’DFSCM’ CL8’DFS’ CL8’DFSGRP’ X’00’,XL7’00’ Group Neither Priv nor Trusted Started Task Name Userid Group Neither Priv nor Trusted SETROPTS RACLIST(STARTED) REFRESH For details, see the following: • Data Set CPAC.SAMPLIB(RACFOE) • OS/390 UNIX System Services Planning, SC28-1890 • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 4.2.1.4 Create the DFSKERN.START.REQUEST Resource Profile A RACF facility for DFSKERN must be added to the security program and be permitted to use ID(s) that run DFS: • Define the FACILITY class resource profile ’DFSKERN.START.REQUEST’ to your security Program. • Ensure the FACILITY class is active. • Permit DFSKERN update access to the ’DFSKERN.START.REQUEST’ resource. SystemPac has already defined DFSKERN to the RACF database and permitted it to the user ID(s) that run DFS. For RACF, the following commands were used: RDEFINE FACILITY DFSKERN.START.REQUEST UACC(NONE) PERMIT DFSKERN.START.REQUEST CLASS(FACILITY) ID(user ID(s)) ACCESS(UPDATE) SETROPTS CLASSACT(FACILITY) For details, see the following: • Data Set CPAC.SAMPLIB(RACFOE) • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 DCE/DFS 201 Note The user ID(s) refer to the user IDs under which the DFS started task runs. In the previous section DFS was used as the example user ID. 4.2.1.5 New customer considerations If this is the first time you have installed OS/390 Distributed File Service, installation customized parameter files must be created by running the dfs_cpfiles program as described below. The files created by the dfs_cpfiles program are listed in OS/390 Distributed File Service Configuring and Getting Started, SC28-1722. 4.2.1.6 Previous customer considerations If you are migrating from a previous release of OS/390 Distributed File Service and installing this DFS release on a host system where DFS is already installed and configured, you can ensure that all the required installation customized parameter files are created by running the dfs_cpfiles program. Note that the dfs_cpfiles program only creates files that do not exist and does not replace any existing file so that any previous installation data is not overlaid. Also, if you want to simplify the installation verification processing, you may want to update the /opt/dfslocal/etc/CacheInfo file to specify memory caching before you IPL the system and restart the new version of the DFS Client (DFSCM). If you have DFS installed on a host system but are installing this release of DFS on a host system where DFS is not already installed and configured, you can use the default configuration files that are created by the dfs_cpfiles program. You cannot copy all the DFS customized files and configuration files from one host system to another because the files contain DCE cell and host system specific data. For a description of the HFS files containing DFS customization data that can be selectively copied to another host system, refer to the OS/390 Distributed File Service Configuring and Getting Started, SC28-1722. 4.2.1.7 Running the dfs_cpfiles program To invoke the dfs_cpfiles program: • Log in as ROOT on the local machine. In OS/390 DFS, this means as a user with UID = 0. • While in the OS/390 UNIX shell environment, invoke the OS/390 Default Configuration Files Creation program by entering the following: $ /usr/lpp/dfs/global/scripts/dfs_cpfiles Refer to OS/390 Distributed File Service Configuring and Getting Started, SC28-1722, for additional information about the dfs_cpfiles Program. 4.2.2 Starting and stopping DFS In these sections we describe how to start and stop DFS. 4.2.2.1 Who can start and stop DFS daemons? There are two types of users who can start or stop DFS daemons in DFS: 1. A user with MVS/ESA operator privileges. 202 Debugging UNIX Applications on OS/390 2. A user who has updates to the DFSKERN.START.REQUEST RACF facility. This facility is created during the installation of DFS. For more information on this RACF facility, refer to the Program Directory for OpenEdition DCE DFS. 4.2.2.2 Starting DFS daemons DFS daemons are started in any of the following ways: • During the system IPL • Using the MODIFY DFS operator command • Using the START operator command Based upon the control files for the DFS Control Task and the BOS Server, set up by the DFS Administrator, all of the DFS daemons are automatically started when the DFS started task is begun. The DFS/NVS daemons all run in one address space, which is a started task (default name DFS). A user with MVS operator privileges can start and stop the DFS started task. The DFS address space may be started automatically during IPL (after DCEKERN is started). To start or stop the DFS address space, use the MVS commands. For example: START DFS STOP DFS You can start the DFS address space without starting the configured DFS daemons using the following command: START DFS,PARMS=’-NODFS’ Ideally, the daemons run continuously in the background and do not need to be started or stopped again. However, the DFS daemons may have to be started manually in certain situations, for example, if a daemon ends abnormally. You can use the MODIFY operator command to manually start or stop the DFS daemons. For more information refer to OS/390 Distributed File Service Configuring and Getting Started, SC28-1722. 4.2.2.3 The MODIFY DFS operator command The DFS daemons can be started or stopped using the MODIFY DFS operator command. Using MODIFY DFS, you can also view the status of the DFS daemons. Following is the syntax of the MODIFY DFS command: MODIFY DFS, command daemon [start_options] DCE/DFS 203 This can be read as follows: Table 35. The MODIFY DFS command Command part Description DFS The name of the DFS address space command The action that is to be performed on the DFS daemon or daemons. It can have any of the following values: start - Starts the DFS daemon(s) stop - Stops the DFS daemon(s) query - Displays the state of the DFS daemon(s) daemon The name of the DFS daemon for which the action is requested. It can have any of the following values: dfskern - DFS kernel program export - Export program to make aggregates available for exporting unexport - Unexport program to unexport aggregates boserver - Basic OverSeer Server to monitor all server processes on the local machine and restart any failed processes automatically butcnn - Backup Tape Coordinator that controls the behavior of the backup tape drive and accepts requests from the bak program (nn is a numeric value, 01 through 08). all - All the DFS daemons start_options Values that are passed when the daemons are started. Using MODIFY DFS to start DFS daemons: With the Modify DFS operator command, you have the option of starting an individual daemon or starting all the daemons using a single command. For example, to start the BUTC01 daemon enter the following: MODIFY DFS, START BUTC01 To start all the daemons, enter the following: MODIFY DFS, START ALL Note Do not use the MODIFY command to start the DFS daemons while the DFS address space is still initializing. During initialization, DFS will attempt to start all the DFS daemons that have been configured on the MVS/ESA host. If you issued the MODIFY command while DFS is initializing, the DFS daemons may be started out of order or stopped erroneously. This may lead to unexpected errors during initialization and cause DFS to end abnormally. You must wait until DFS has issued a log message indicating that DFS initialization has completed before using the MODIFY commands. 204 Debugging UNIX Applications on OS/390 Order of starting DFS daemons When DFS daemons are started manually, the successful startup of some daemons depends on the availability of the services provided by other daemons. This implies that the DFS daemons must be started in a particular order. Before you can start up any of the DFS daemons, the DCE Security daemon and the DCE CDS daemon must already be running in the cell. The DFS daemon should be started in the following sequence: 1. dfskern 2. export 3. boserver Note This is only applicable if you need to start any of the DFS individually. If the DFS daemons are started collectively (for example, using the start all option of the MODIFY DFS command), DFS ensures that the correct starting sequence is followed. For example, to successfully start the boserver daemon, the dfskern daemon must already be up and running. Note Make sure that the passwords of the DFS daemons are valid before starting them up. If the passwords have expired, the daemons cannot be started. Viewing the status of DFS daemons You can query the status of the DFS daemons using the query option of the MODIFY system command. You do not need the special privileges of a DCE or DFS administrator or an operator to use the query option. For example, to query the status of the dfskern daemon, enter the following: MODIFY DFS, QUERY DFSKERN A message about the status of the daemon will be written on the system log. This message will also contain the process ID of the daemon. The status of the daemon can be any of the following: Table 36. Daemon’s status Status Description READY Indicates that the daemon is running, has been initialized, and is ready to receive and process incoming requests. ACTIVE Indicates that a manual process is running. When an active process stops, it is never considered an error and it is never restarted automatically. DCE/DFS 205 Status Description INITIALIZING Indicates that the daemon has been started, but is not yet ready to receive and process incoming requests. STOPPING Indicates that a request to stop the daemon has been received and that the daemon is in the process of stopping. DOWN Indicates that the daemon is not active. UNKNOWN Indicates that the status of the daemon cannot be determined. This can occur if the daemon was started, but no response was received by the system indicating a change in its status. Note: You can issue a command to stop a daemon if it is in the UNKNOWN state. The status of the DFS/MVS daemons controlled by the Control Task can be queried by MVS operator commands. For example: MODIFY DFS,QUERY ALL MODIFY DFS,QUERY DFS MODIFY DFS,QUERY BOSERVER MODIFY DFS,QUERY BUTC01 The following is an example of a query command to the Control Task. The output is sent to the MVS Operator’s console: MODIFY DFS,QUERY DFSKERN Output: IOEP000221 DFS daemon DFSKERN status is >READY and process ID is 781 4.2.3 Daemon configuration file The daemon configuration file is used by the Control Task to obtain necessary information when starting the DFS daemons. The daemon configuration file contains the following information: • Parameters that are passed to the load module when a daemon is started, called the argument list (including LE/370 run-time options). • The Minimum Restart Interval. The Control Task attempts to restart a daemon that ends abnormally only if the daemon was running for at least this time interval. If a daemon ends during this time interval, it will not be restarted. • The Time-out Period, which is the maximum time interval that the Control Task waits for the daemon to complete its initialization after it has been started. When this time interval elapses, and the Control Task has not received confirmation from the daemon that initialization has completed, the status of the daemon is set to unknown. The pathname to the daemon configuration file is /opt/dfslocal/etc/ioepdcf. 206 Debugging UNIX Applications on OS/390 4.2.3.1 DFS administrative lists and groups The administration of DFS in a cell or domain is regulated by DFS administrative lists. An administrative list is a file that determines which system administrators are allowed to issue commands that affect DFS server processes on server machines. Each process is associated with an administrative list. Individual users can be placed on an administrative list to grant them the privileges associated with the list. Groups of users can also be created and placed on an administrative list. A group is a defined collection of users placed on an administrative list to grant the administrative privileges associated with the list to all of the members of the group simultaneously. The same group can be included on multiple administrative lists; for a user to be extended the privileges associated with each of those lists, the user needs only to be added to the proper group. This feature greatly simplifies the responsibilities of the DFS system administrator. For example, the Fileset Server on each file server machine has an administrative list name admin.ft associated with it. Each user and each member of a group is listed in the admin.ft file on that machine. A user can acquire the administrative-level-commands that affect the Fileset Server on that machine. A user can acquire the administrative privileges associated with the admin.ft file either directly, by being added to the file or indirectly, by being added to a group listed in the file. For instance, you can create a group called domain1.admin and include it in the administrative lists necessary to allow its members to administer data on the file server machine in a single domain. You can then assign users to the domain1.admin group to grant them administrative privileges on the file server machine in the domain; you do not need to include each individual user in all of the necessary administrative lists in the domain. Similarly, you can create additional groups for other administrative tasks, such as managing processes or installing new system binaries, and include the same or different users in these groups. Users have only the privileges associated with the administrative lists in which they are included. Unless users are also members of other administrative lists in a domain or in a cell to which a domain belongs, their membership is an administrative list on a machine that grants no additional privileges beyond the scope of that administrative list in a domain. The user performing a task must be included in the appropriate administrative lists. Users can be included directly, by having their user names included in the list, or they can be included indirectly, by being assigned to a group that is included in the list; either method is sufficient. Administrative lists are only one form of security used in DFS; DCE ACLs are also used to limit access to files and directories. Many DFS operations require that the issuer be included on the proper administrative lists and have the proper ACL permissions. 4.2.3.2 DFS security Several security measures are used to ensure that only valid users can access files stored in the DFS filespace. When you correctly authenticate to a DCE cell, you receive authentication information in the form of a ticket. DCE/DFS 207 When you attempt to access data using a client machine, the Cache Manager presents your ticket to the file server machine that houses the data. The Cache Manager receives the data you requested when mutual authentication is complete between the Cache Manager and the file server machine. Mutual authentication is achieved when the two machines prove their identities to each other. DFS requires this mutual authentication whenever a server and a client communicate. With DCE ACLs, you designate who can access the information in your files. An ACL can exist for each directory and each file in DFS, specifying the actions that different users can perform on the directory or file (ACLs exist only for DCE local file system directories and files). 4.2.4 DFS daemon environment variable files DFSCNTL and each DFS daemon has its own home directory. Each home directory contains the environment variable file (ENVAR), where the environment variables are set for each of the daemons. The ENVAR files of the DFS daemons are in: /opt/dfslocal/home/dfscntl/envar /opt/dfslocal/home/dfskern/envar /opt/dfslocal/home/dfsxport/envar /opt/dfslocal/home/boserver/envar /opt/dfslocal/home/butc01/envar /opt/dfslocal/home/butc02/envar /opt/dfslocal/home/butc03/envar /opt/dfslocal/home/butc04/envar /opt/dfslocal/home/butc05/envar /opt/dfslocal/home/butc06/envar /opt/dfslocal/home/butc07/envar /opt/dfslocal/home/butc08/envar /opt/dfslocal/home/ftserver/envar /opt/dfslocal/home/rpserver/envar /opt/dfslocal/home/upserver/envar /opt/dfslocal/home/upclient/envar You can customize the values of the environment variables in these files to suit your operational needs. 4.3 Information sources This section lists and provides a brief description of each publication in the OS/390 Distributed File Service library. Also listed are publications from the OS/390 DCE library that may be useful. 4.3.1 OS/390 Distributed File Service publications This section lists and provides a brief description of each publication in the OS/390 Distributed File Service (DFS) library. 4.3.1.1 Administration OS/390 Distributed File Service Configuring and Getting Started, SC28-1722 208 Debugging UNIX Applications on OS/390 This book helps system and network administrators configure the OS/390 Distributed File Service. OS/390 Distributed File Service Administration Guide and Reference, SC28-1720 This book introduces the DFS concepts to system and network administrators and provides an in-depth understanding of DFS, its uses and benefits. This book also provides reference information for the commands and files used by system and network administrators to work with DFS. 4.3.1.2 Reference OS/390 Distributed File Service Messages and Codes, SC28-1724 This book provides detailed explanations and recovery actions for the messages, status codes, and exception codes issued by the OS/390 DFS. 4.3.2 OS/390 DCE publications In this section we list and provide a brief description of each publication in the OS/390 DCE library. 4.3.2.1 Overview Distributed Computing Environment: Understanding the Concepts, GC09-1478 This book introduces Open Software Foundation (OSF) DCE. It describes the technology components of DCE, from a high-level overview to a discussion of the interdependencies among the components. OS/390 DCE Introduction, GC28-1581 This book introduces OS/390 DCE. Whether you are a system manager, technical planner, OS/390 system programmer, or application programmer, it will help you understand DCE, and evaluate the uses and benefits of including OS/390 DCE as part of your information processing environment. 4.3.2.2 Planning OS/390 DCE Planning, SC28-1582 This book helps you plan for the organization and installation of OS/390 DCE. It discusses the benefits of distributed computing in general, and describes how to develop plans for a distributed system in an OS/390 DCE environment. 4.3.2.3 Administration OS/390 DCE Configuring and Getting Started, SC28-1583 This book helps system and network administrators configure OS/390 DCE. OS/390 DCE Administration Guide, SC28-1584 This book helps system and network administrators understand OS/390 DCE, and tells how to administer it from the batch, TSO, and shell environments. OS/390 DCE Command Reference, SC28-1585 This book provides reference information for the commands that system and network administrators use to work with OS/390 DCE. DCE/DFS 209 OS/390 OpenEdition DCE User’s Guide, SC28-1586 This book describes how to use OS/390 DCE to work with your user account, use the directory service, work with namespaces, and change access to objects that you own. 4.3.2.4 Application development OS/390 DCE Application Development Guide: Introduction and Style, SC28-1587 This book assists you in designing, writing, compiling, linking, and running distributed applications in OS/390 DCE. OS/390 DCE Application Development Guide: Core Components, SC28-1588 This book assists programmers in developing applications using application facilities, threads, remote procedure calls, distributed time service, and security service. OS/390 DCE Application Development Guide: Directory Services, SC28-1589 This book describes the OS/390 DCE directory services and assists programmers in developing applications for the cell directory service and the global directory service. OS/390 DCE Application Development Reference Volumes 1 and 2, SC28-1590 This book explains the DCE Application Program Interfaces (APIs) that you can use to write distributed applications on OS/390 DCE. 4.3.2.5 Reference OS/390 DCE Messages and Codes, SC28-1591 This book provides detailed explanations and recovery actions for the messages, status codes, and exception codes issued by OS/390 DCE. 4.3.3 Security Server publications In this section we list and provide a brief description of books in the Security Server library that may be needed for the DCE Security Server and for RACF interoperability. OS/390 OpenEdition DCE Security Server Overview, GC28-1938 This book describes the DCE security server and provides a road map for DCE security server information in the OS/390 DCE library. OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 This book explains RACF concepts and describes how to plan for and implement RACF. 210 Debugging UNIX Applications on OS/390 Chapter 5. Web server—troubleshooting/hints/tips In this chapter we cover explanations about error messages, possible pitfalls, and some performance issues that are usually not found in any other books. These pieces are results of worldwide experiences with the handling and debugging either of the Domino Go Webserver or WebSphere Application Server. 5.1 Controlling your server using the console The OS/390 MODIFY console command can be used to display statistics about your server, turn on and off the very verbose trace, restart your server and turn on and off SMF recording. The following figures are showing the use of the command and all available parameters: COMMAND INPUT ===> /F server_jobname,APPL=-D CONFIG RESPONSE=SC63 IMW3501I Config: Hostname: wtsc63oe.itso.ibm.com, Port: 80, SSL Port: 443, Server root: /web/apple. Trace is currently disabled. SMF recording is currently disabled. Figure 112. MODIFY command to display server configuration COMMAND INPUT ===> /F server_jobname,APPL=-D STATS RESPONSE=SC63 IMW3502I Stats: Threads running: 40, Threads idle: 40, Requests: 5, Bytes rcvd: 3368, Bytes sent: 1947, Actv In Conns: 0, Actv Out Conns: 0 Figure 113. MODIFY command to display server statistics COMMAND INPUT ===> /F server_jobname,APPL=-VV RESPONSE=SC63 IMW3518I More trace enabled. (Very Verbose) COMMAND INPUT ===> /F WEBAPPLE,APPL=-NODEBUG RESPONSE=SC63 IMW3508I Debug has been disabled for all modules. Figure 114. Turn on and off very verbose tracing COMMAND INPUT ===> /F server_jobname,APPL=-RESTART IMW3537I SA 234881038 0.0.0.0:80 * * RESTARTING IMW3538I SA 234881038 0.0.0.0:80 * * RESTART SUCCESSFUL Figure 115. Restarting the server © Copyright IBM Corp. 1999 211 COMMAND INPUT ===> /F server_jobname,APPL=-?? RESPONSE=SC63 IMW3528I -d config : Server configuration -d stats : Server statistics -debug <mod_name> : Enables trace -? debug : Lists mod_names for "-debug" -nodebug <mod_name>: Disables trace -? nodebug : Module names for "-nodebug" -restart : Restarts the Server -smf <opt> : Enables SMF recording -? smf : Lists options for "-smf" -nosmf <opt>: Disables SMF recording -? nosmf : Lists options for "-nosmf" -v : Verbose (trace all modules) -vv : VeryVerbose (more tracing) -mtv : MuchToVerbose (w/ trace stacks) -vc : VerboseCache (trace cache) -version : Version of Server Figure 116. MODIFY command to display all parameters 5.2 Tracing and logging Trace and log issues are discussed in the following sections. 5.2.1 Tracing 5.2.1.1 Controlling the tracing level For debugging any server or configuration problems the trace log is most useful. It is written to the SYSOUT DD definition in the Web server procedure. If you want to have it written into the HFS, you should code a TraceLog directive in your httpd.conf file. There is a function supplied with the Web server which allows you to control the level of tracing. To activate it code the following in your httpd.conf file: service /admin-bin/trace* INTERNAL:TraceFn To access the dialog, enter the following at your Web browser: http://your.web.server:yourportnumber/admin-bin/trace 212 Debugging UNIX Applications on OS/390 Figure 117. Controlling the trace level 5.2.1.2 Starting the trace using the start procedure There is another possibility to enable the very verbose trace using the -vv option in the procedure to start the server. This looks like: //WEBAPPLE PROC P1='-p 80', // P2='-r /web/apple/httpd.conf', // P3=' -vv', // LEPARM='ENVAR("_CEE_ENVFILE=/web/apple/httpd.envvars")' //WEBSRV EXEC PGM=IMWHTTPD,REGION=0K,TIME=NOLIMIT, // PARM=('&LEPARM/&P1 &P2 &P3') The output of the trace can be found in the OS/390 system log. 5.2.2 Language Environment tracing Language Environment (LE) provides various tracing options for programmers to use in optimizing parameters such as the sizes of heaps and stacks. In the Web server proc, RPTSTG(ON) or RPTOPTS(ON) parameters cause LE tracing. 5.2.3 Logging 5.2.3.1 Using logs for problem determination If you have a problem with your Internet application, it is always best to first check your log and trace files to identify the cause of the problem. The Domino Go Webserver can be configured to generate different logs in varying formats. Each day at midnight, the server closes the logs for that day and Web server—troubleshooting/hints/tips 213 creates new logs. Logs hold all the raw data that is used to generate all the reports. See Domino Go Webserver Webmaster's Guide, SC31-8691, for more information. 5.2.3.2 The following logs are generated • The server logs activity in the access log files and stores them each night. At midnight each night, the server closes the current access log and creates a new access log file for the coming day. The access log contains entries for page request mode to the server. • The agent log indicates which Web browser was used to access a Web page. • The referer log identifies the Web page that referred or linked to the requested Web page. By default the server writes an entry to the agent and referer logs each time a client sends the server a request. • Cache access log: Logs all access requests for files served out of the proxy server's cache. • CGI error log: Logs standard error output (stderr) from Common Gateway Interface (CGI) programs. • Error log: Logs errors encountered by your server's clients, such as timing out, authentication errors, and access problems to Web pages. • Proxy access log: Logs access requests for files that come from a proxy server. • Trace log: Logs all trace data according to trace levels that are set when you start your server. These trace settings should only be turned on to trace a server problem since they will affect Web server performance. The trace log path is defined using the TraceLog directive in the httpd.conf file. The trace levels include: • verbose (-v) • very verbose (-vv) • much too verbose (-mtv) Check your httpd.conf file and the webmaster’s guide for a detailed explanation of all the logs, how they can be enabled, and to where they will be written. 5.2.3.3 Additional system logs and traces • The OS/390 System Log (SYSLOG) will contain all messages related to your security product, such as RACF. • The UNIX System Services syslogd daemon captures information on selected TCP/IP servers. • TCP/IP traces. For more information on this, see the OS/390 eNetwork Communications Server IP Diagnosis Guide, SC31-8521. • Component, Master, and System Trace are for your service representative. • RACF GTF Trace if you suspect a RACF dirty environment. See 5.3, “Common error messages” on page 216. • SMF Data is useful if you are looking into performance and security access issues. If you think somebody has tampered with your environment, you will likely find the cause here if you are capturing all the relevant SMF records. 214 Debugging UNIX Applications on OS/390 5.2.3.4 More logs for the WebSphere Application Server The WebSphere Application Server manager enables you to generate and view two types of log files for servlet activity. To access the WebSphere Application Server manager dialog enter the following URL: (port 9090 is the default port) http://your.web.server:9090 The two types of log files are: • Event log: contains a log of all servlets events • Error log: lists errors related to servlets Use the log files task in the manager dialog to define the settings for the servlet error and events log files as shown in Figure 118. Figure 118. WebSphere Application manager The log file task IBM default names of the provided servlet log files are: IMWebAS_rootlogs/servlet/servletservice/event_log IMWebAS_rootlogs/servlet/servletservice/error_log The application server supports two other types of logging: • Native DLL logging: log messages produced by the Webserver C code before entering Java. • Java standard out logging. Any system.out and system.err prints go to this log. Web server—troubleshooting/hints/tips 215 To control these types of logging, you must manually edit the jvm.properties file and restart the server. • Enable logging: 1. Set the property ncf.native.logison=true. 2. Set the property ncf.native.logfile=Websphere Application server_root/logs/native.log. 3. Restart your server. • Disable logging: 1. Set the property ncf.native.logison=false. 2. Restart your server. To control Java standard out logging, edit the jvm.properties file. • Enable logging to a file: 1. Set the property ncf.jvm.stdoutlog.enabled=true. 2. Set the property ncf.jvm.stdoutlog.file=true. 3. Set the property ncf.jvm.stdout.filename=Websphere Application server_root/logs/ncf.log. 4. Restart your server. • To enable logging to the Java console window: 1. Set the property ncf.jvm.stdoutlog.enabled=true. 2. Set the property ncf.jvm.stdoutlog.file=false. 3. Restart your server. • To disable logging to the Java console window: 1. Set the property ncf.jvm.stdlogout.enabled=false. 2. Set the property ncf.jvm.stdoutlog.file=false. 3. Restart your server. 5.3 Common error messages In this section we show the most common error messages in the Web server environments and how to handle them. This information is mainly extracted from http://www.software.ibm.com/webservers/httpservers/doc where other troubleshooting information can be found. 5.3.1 02AF (address space dirty) Some possible reasons for 02AF. 5.3.1.1 All users... If a file system (HFS) is mounted with NOSETUID or Ignore SETUID, the program control extended attribute will be ignored for any executable loaded from the file system. If you program control using ****** to point to the IPL volume, be sure that the data sets exist on the one volume that is IPLed and not on any other volume that 216 Debugging UNIX Applications on OS/390 is used to holding program product data sets. For the ****** to work, the data sets must exist on the one volume that was IPLed. 5.3.1.2 If using WebSphere Application Server... Check to make sure the program control bit is on for the following files: • /usr/lpp/WebSphere/AppServer/lib/libadpter.so • /usr/lpp/WebSphere/AppServer/lib/libicsnativ.so Check to make sure you have turned on program control for the HFS resident JDK DLLs. To turn on program control: 1. Give a superuser ID Read access to the BPX.FILEATTR.PROGCTL Facility to enable this superuser ID to update the HFS file attributes using the extattr command: RDEFINE FACILITY BPX.FILEATTR.PROGCTL UACC(NONE) PERMIT BPX.FILEATTR.PROGCTL CLASS(FACILITY) ID(superuserID) ACCESS(READ) SETROPTS RACLIST(FACILITY) REFRESH 2. Go into the OMVS shell using the superuser ID (UID=0) that you just permitted to the BPX.FILEATTR.PROGCTL class above and enter: cd <JAVA_HOME>/lib/mvs/native_threads extattr +p *.* ls -E For <JAVA_HOME> enter the path or the root directory for your JDK. Check to make sure you have turned on program control for the C++ load library. To turn on program control, issue the following RACF commands: RALTER PROGRAM * ADDMEM('CBC.SCLBDLL'//NOPADCHK) UACC(READ) SETROPTS WHEN(PROGRAM) REFRESH 5.3.1.3 Using ServletExpress support When running V5.0 Lotus Domino Go Webserver with ServletExpress support, and the Web server is configured with a user ID of %%CLIENT%% or a surrogate ID in the httpd.conf configuration file, clients may receive an error 500 message. Review the Web server trace log to determine if the following messages were issued for the particular client request: Failed access as Surrogate: , Errno: 139, Errno2: 0be802af, Error: EDC5139I Operation not permitted. IMW0241E Access denied - surrogateuser setup error. When configured with %%CLIENT%%, the Errno2 value=090c02af. Web server—troubleshooting/hints/tips 217 If these messages are generated for the failing client request, you must turn on program control for the Java DLLs residing in the HFS. Instructions are documented in APAR PQ18310 and are as follows: 1. Give a superuser ID Read access to the BPX.FILEATTR.PROGCTL Facility to enable this superuser ID to update the HFS file attributes using the extattr command: RDEFINE FACILITY BPX.FILEATTR.PROGCTL UACC(NONE) PERMIT BPX.FILEATTR.PROGCTL CLASS(FACILITY) ID(superuserID) ACCESS(READ) SETROPTS RACLIST(FACILITY) REFRESH 2. Go into the OMVS shell using the superuser ID (UID=0) that you just permitted to the BPX.FILEATTR.PROGCTL class above and enter: cd JAVA_HOME/lib/mvs/native_threads extattr +p *.* ls -E where JAVA_HOME is the path or the root directory for your JDK. 5.3.1.4 RACF considerations Ensure all relevant data sets have been marked under RACF program control. All of the following must be loaded from a program-controlled PDS: SYS1.LINKLIB pwapi.so hlq.SIMWMOD1 hlq.SCEERUN hlq.SCLBDLL If running DB2, hlq.DSNLOAD and hlq.DSNEXIT If using JDBC, hlq.CSSLIB Any DLL loaded by a service class verb The volume serial must be correct for these data sets. The sequence of data sets in the LNKLST is important. If something is loaded from an uncontrolled PDS that appears before a controlled PDS, the address space will be dirty. If you cannot identify the failing module, follow the instructions in RACF Information APAR II08176. If you still cannot determine the cause of the problem, follow the instructions in OS/390 UNIX Information APAR II10548. 5.3.1.5 Using another security product Follow the instructions in OS/390 UNIX Information APAR II10548. 5.3.2 401 errors When a password for an MVS user ID expires and that user ID attempts to access the server, the server responds with a 401 pwexpired error. To change the password using the Netscape browser: 1. Click Reload. 2. Enter the user ID, oldpassword/newpassword/newpassword, for the password. 3. Select OK. 218 Debugging UNIX Applications on OS/390 4. Select Cancel. You will receive the 401 pwchanged Error Page because the password has been changed successfully. 5. Click Reload. 6. Enter the user ID and new password. The Front Page should be displayed. If you now receive the 401 pwnewneq error or the 401 pwnewinv error, you have entered the verifying password (/newpassword/verifyingpassword) incorrectly, or the password you entered is not a valid password. 5.3.3 Failed to load security module: EDC5207S Load request for shared load module unsuccessful. At initialization, the server attempts to load the North American Security DLL, followed by the Export Security DLL. This message is issued if you do not have one or both of these DLLs installed. If neither DLL is found, the server is started as a base server without any security feature loaded. 5.3.4 "Forbidden" or "Unauthorized" error message These error messages can indicate the following problems: There could be an OS/390 UNIX setup problem. Ensure the access flags are rwxr-xr-x for directories and rw-r--r-- for files. This includes the root ('/') directory. The UID or GID values may not be correct. Try logging onto OS/390 UNIX using the PUBLIC access control user ID and access files to the UID or GID values. Check the console log or security product audit logs for protection problems. 5.3.5 IMW0161E with error 500 If the following message is accompanied by error 500, this indicates that the helpout file cannot be executed because of a permission bit problem. IMW0161E The script request is not valid. No variation of /usr/lpp/internet/server_root/admin-bin/helpout is executable. Check permission bits along the directory structure using the ls -dl command to make sure that the execute bit is turned on. The following example shows a valid set of permission bits: MICHELW @ SC63:/>ls -dl / drwxr-xr-x 19 OMVSKERN TTY 8192 Jun 23 14:59 / MICHELW @ SC63:/>ls -dl /usr drwxr-xr-x 10 AK OMVSGRP 8192 Jan 26 11:48 /usr MICHELW @ SC63:/>ls -dl /usr/lpp drwxr-xr-x 37 OMVSKERN OMVSGRP 8192 Jun 21 10:29 /usr/lpp MICHELW @ SC63:/>ls -dl /usr/lpp/internet drwxr-xr-x 9 OMVSKERN OMVSGRP 8192 Jun 18 14:42 /usr/lpp/internet MICHELW @ SC63:/>ls -dl /usr/lpp/internet/server_root drwxr-xr-x 15 WEBADM IMWEB 8192 Jan 26 11:51 /usr/lpp/internet/server_root Web server—troubleshooting/hints/tips 219 MICHELW @ SC63:/>ls -dl /usr/lpp/internet/server_root/admin-bin drwxr-xr-x 4 WEBADM IMWEB 8192 Apr 2 13:07 /usr/lpp/internet/server_root/admin-bin MICHELW @ SC63:/>ls -dl /usr/lpp/internet/server_root/admin-bin/helpout -rwx-----2 WEBADM IMWEB 258048 Jan 27 21:13 /usr/lpp/internet/server_root/admin-bin/helpout 5.3.6 Error using message catalog If you run the Web usage mining command and see the error message, Error using message catalog, this usually indicates that the NLSPATH setting in your .profile does not match the setting in the server's httpd.envvars file. To change environment variable settings in your .profile, use the export command, for example: export NLSPATH=setting 5.3.7 Setup.sh error messages If you have run setup.sh more than once, you will receive the following messages that can be ignored: ln: FSUM6245 link to target "/usr/lpp/internet/bin/mvsds.so" failed: EDC5117I file exists. This message is received because you are trying to create an external link that has been previously created. chown: FSUM6180 file "/usr/lpp/internet/bin/wwwss.so": EDC5129I No such file or directory. This message is received because you are trying to change ownership in a file that does not exist. There is no file associated with wwwss.so, only an external link to an MVS data set. 5.3.8 ID and password prompt when accessing at a nonstandard port If you access the HTTP Server at a nonstandard port number (such as port 8400), you are prompted for a user ID and password to access the configuration and administration forms. If you keep the same browser up and access the same server at default port 80, you do not get prompted for a user ID and password. This is a browser problem. If you started with a new browser, then access the server on port 80; you will be prompted for the user ID and password. 220 Debugging UNIX Applications on OS/390 5.3.9 IMW messages This section contains information about how to read IMW messages. 5.3.9.1 Message ranges This table shows the relationship between the server's components and their corresponding message ID ranges: Table 37. Message ranges for the server components Message ID Range Component IMW0001–IMW2000 IMWHTTPD messages IMW2001–IMW2500 Proxy Server messages IMW3501–IMW3700 CONSOLE messages IMW3701–IMW3999 HTCounter Program messages IMW4000–IMW5000 HTIMAGE messages IMW5001–IMW6000 HTADM messages IMW6001–IMW6100 CERTREQ Security messages IMW6101–IMW6300 CERTUTIL Security messages IMW6401–IMW6600 HTSHTTPD Security messages IMW6801–IMW6900 SSL Security messages 5.3.9.2 Process descriptor Messages IMW3536I through IMW3542E contain a process_descriptor, which includes mode processid ServerIPA:ServerPort serverSN serverAE Where mode is one of the following: • SA—the server started as a stand-alone process (not managed by WLM) • QM—the server started as a WLM Queue Manager • QS—the server started as a WLM Queue Server The server's process identifier as assigned by UNIX System Services is processid. ServerIPA is the server's IP address, in the form n.n.n.n, where n is from 0 to 255. If ServerIPA is 0.0.0.0, then the server is not bound to any specific IP address (if neither the BindSpecific directive nor the -HN start parameter was used). ServerPort is the primary port number that the server is listening on. serverSN is the WLM subsystem name. If mode indicates SA, then serverSN will be '*'. Otherwise, it reflects the value passed as the -SN start parameter. serverAE is the WLM Application Environment name. If mode indicates SA or QM, then serverAE will be '*'. Otherwise, it reflects the value passed as the -AE start parameter. Web server—troubleshooting/hints/tips 221 5.3.10 How to read a message How can an IMW message be interpreted? This is shown in the following example: +0600.: Failed on attach of shared memory, errno=111 +0600.: IMW0264E __errno2() =7170303 Explanations: • errno=111: This errno is a USS return code and can be found in the OS/390 UNIX System Services Messages and Codes, SC28-1908. The codes described there are represented in hex and decimal values. So look for "111" decimal) or "006F" (hex) in the book and you will find: 111 006F EACCES Permission is denied. • IMW0264E: For this message look at the Web server message manual, for example Domino Go Webserver Messages, SC31-8692, and you will find: IMW0264E errno2=hex number Explanation: This is additional, OpenEdition MVS specific error information associated with a previous message. User Response: Contact the IBM Software Support Center. • errno2() =7170303: This errno is a USS reason code and can be found in OS/390 UNIX System Services Messages and Codes, SC28-1908. It is divided into two parts: Table 38. USS errno cccc rrrr 0717 0303 • cccc is a halfword reason code qualifier • rrrr is a halfword reason code described in the message manual appendix The two high-order bytes of the reason codes returned by OS/390 UNIX contains a value that is used to qualify the contents of the two low-order bytes. If the contents of the two high-order bytes are within the range of 0000 to X'20FF', the error represented by the reason code is defined by OS/390 UNIX. If the contents of the two high-order bytes are outside the range, the error represented by the reason code is not an OS/390 UNIX reason code. Cause 0717 is within the range of 0000 to X'20FF', 0303 is an OS/390 UNIX reason code. Looking for 0303 in the message manual results in: 0303 JRIpcDenied Access was denied because the caller does not have the correct permission. Action: The caller lacked ownership, read or alter permission. Note Look at the MVS system log in case of errors and problems in the Web server environment because in a lot of cases very useful information can be found there. 222 Debugging UNIX Applications on OS/390 5.4 Tuning hints and tips In this section we cover actual performance and tuning hints and tips that can be found mainly on Web sites. 5.4.1 Performance hints when running Web server under USS shell Production Web servers should be configured as OS/390 Started Tasks. It is difficult to achieve the desired performance characteristics when running the Web server from the OS/390 UNIX shell. If you choose to execute the Web server from a UNIX shell, the Web server will probably run in an S/390 UNIX forked address space. To guarantee that the Web server runs in its own address space, run it as a background shell job. To run as a background job, enter the name of the program followed by the parameters and then the character "&", for example, httpd parms &. The Web server will execute at the dispatching priority assigned to forked address spaces. These are designated as SUBSYS=OMVS in your IEAICSxx member of SYS1.PARMLIB or WLM policy. Generally, dispatch priority assigned to this type of work is much too low for production Web servers, although it may be adequate for testing. Normally TSO, TELNET and forked address spaces have three performance periods defined, with the third period having low dispatching priority. After a few seconds of execution, the Web server will fall into the third performance period and remain at low priority for the duration of its life. Make sure that you assign a high enough priority to the address space that initiates the Web server and to the resulting forked address space. This can be accomplished by adding additional qualifiers such as the USERID or ACCTINFO keywords to the IEAICSxx or WLM policy and assigning a performance group or service class with the desired priority. For example, if you are running in compatibility mode, your IEACICSxx might have an entry similar to the following: SUBSYS=OMVS,PGN=99 USERID=WEBSERV And your IEAIPSxx might have a corresponding entry similar to the following. Note that when selecting a dispatching priority it is important to consider the relationship to other kinds of work. The relative priority is more important than the absolute value you have selected. The example below is for illustration and is not meant to suggest that you must run at priority F82: PGN=99,(DMN=99,DP=F82) If you are executing your Web server in Scalable Server mode (WLM support enabled), you will probably want to modify the classification rules for the OMVS service class. In addition to SRM and WLM parameters, if the user entered the shell using rlogin or telnet, the performance of the Web server running under the shell will be subject to certain limitations specified in the BPXPRMxx member of Web server—troubleshooting/hints/tips 223 SYS1.PARMLIB. These are global values. Increasing them will allow all OS/390 UNIX processes to increase their use of these resources. • MAXASSIZE(nnnnn) Specifies the RLIMIT_AS resource values that a process receives when it is identified as a process. RLIMIT_AS indicates the address space region size. • MAXCPUTIME(nnnnn) Specifies the RLIMIT_CPU resource values that a process receives when it is identified as a process. RLIMIT_CPU indicates the CPU time, in seconds, that a process can use. • MAXTHREADS(nnnnnn) Specifies the maximum number of pthread_created threads, including running, queued, and exited but undetached, that a single process can have concurrently active. A value of 0 prevents applications from using pthread_create. A Web server started by a TSO user who entered the UNIX shell by running the OMVS command, will inherit the TSO address space REGION and TIME limits specified in the TSO LOGON PROC. To provide optimal support for running the Web server from the shell, the region and time limits need to be set to unlimited and the task and thread limits may need to be raised. This can be accomplished in two ways: 1. Write a C or C++ program that calls the following services: • setrlimit to change the region size to unlimited • setrlimit to change the time to unlimited • set_thread_limit_np to set thread and task limits These services are described in OS/390 C/C++ Run-Time Library Reference, SC28-1663. Execute this program before invoking the Web server. Note that you need to be a superuser to change these limits to higher values. This would imply that this program would need to be a setuid program that runs with UID=0. This requirement is also present for solution 2. 2. Set the system thread and task limits as appropriate for the Web server and write a program to invoke __spawn2(). The call to __spawn2() should set the following: • Region size unlimited • Time limit unlimited • Jobname These settings are described in OS/390 C/C++ Run-Time Library Reference, SC28-1663. 224 Debugging UNIX Applications on OS/390 5.4.2 Tuning your Web server for better performance In this section we describe tuning hints and tips that should improve your Web server's performance. Information has been gathered under testing conditions or from Web server users. Results in your environment may vary. 5.4.2.1 Performance settings Each time your server receives a request from a client, it uses one or two threads to perform the requested action. One thread is used if the server is not performing DNS lookup; two threads, if the server is performing DNS lookup. If no threads are available, the server holds requests until more threads are available. The MaxActiveThreads setting in your configuration file specifies the maximum number of active threads. If your server is running at maximum capacity on a sustained, non-stop basis, the amount of virtual memory used increases. This increase is temporary and is alleviated as the number of requests decline and the server catches up on serving requests. Hints and tips • You can lower the amount of virtual memory used by lowering the maximum number of active threads setting. A good starting point is half of your current MaxActiveThreads setting. Keep in mind when you are lowering this value that, when no threads are available, the server holds requests until more threads are available. • You can use the ServerPriority setting to override the OS/390 UNIX default priority that your operating system gives to the Web server. • If your server is running too slowly, it could be related to any of the following factors: - Your network speed - The traffic on your LAN - The number of clients that are sending requests to your server - The number of threads set on your server - You specified -v or -vv tracing • V5.1 Web server: Use the Fast Response Cache Accelerator for dynamic caching. The EnableFRCA setting is used to turn this caching function on. If you are not caching files with the Cache Accelerator, use the CacheLocalFile setting to load your most popular files into the server's memory at startup time. You can specify the maximum amount of memory and the maximum number of files for caching with the CacheLocalMaxBytes and CacheLocalMaxFiles settings. • Use the PersistTimeout and the MaxPersistRequest settings to specify the characteristics of a persistent connection. A persistent connection allows the server to accept multiple requests and to send responses over the same TCP/IP connection. Overall throughput is increased because the server does not have to establish a separate TCP/IP connection for each request and response. Also, the TCP/IP connection is used more efficiently because a client can make multiple requests without waiting for the response to each request. Web server—troubleshooting/hints/tips 225 • The following defaults have been set for better performance. You should modify these directives only if you want the additional function they provide: - DNS-Lookup off - LiveLocalCache off - UseMetaFiles off - DirAccess off - imbeds off 5.4.2.2 Changing performance settings on the Web server You can change your server's performance settings by using the configuration and administration forms or by editing your server configuration file directly: • To use the configuration and administration forms, click Configuration and Administration Forms from the Front Page of your server and use the System Management forms. V5.1 Web server: If using the Fast Response Cache Accelerator, use those forms to change Fast Response Cache Accelerator settings. • To edit the configuration file, open the httpd.conf file and update the appropriate directives. You must restart your server to use the new settings. 5.4.2.3 Cache management guidelines In this section we describe caching options that can help you optimize your server's performance. Use the Fast Response Cache Accelerator (V5.1 Web server) • Overview The Fast Response Cache Accelerator can improve the performance of the Web server when serving text and image files; dynamic content and protected pages are not cached. Because the Cache Accelerator cache is automatically loaded during server operation, you are not required to list the files to be cached in your server configuration file. In addition, the server will automatically recache changed pages and remove outdated pages from the cache. The Cache Accelerator provides support for caching on multiple Web servers and on servers with multiple IP addresses. Currently, support is not available for running the Cache Accelerator on a proxy server. • Planning considerations • WLM access Before using the Cache Accelerator, ensure that the Web server has access to Workload Management. • Unique subsystem name for WLM If you are not using the -SN parameter when starting the server, you must specify a unique subsystem name for the Cache Accelerator when you configure dynamic caching. 226 Debugging UNIX Applications on OS/390 • TCP/IP stack name If you are using common INET and multiple TCP/IP stacks, identify the name of the TCP/IP stack which supports the Cache Accelerator. This name must match the name on the SubFileSysType statement in the OS/390 UNIX BPXPRMxx parmlib member. • Enabling and configuring the Cache Accelerator By default, the Cache Accelerator is not enabled. You can enable and configure the Cache Accelerator by using the configuration and administration forms or by editing your server configuration file directly: • To use the configuration and administration forms: 1. From the Front Page of your server, click Configuration and Administration Forms. 2. Click Fast Response Cache Accelerator. 3. Click Enable Fast Response Cache Accelerator to turn dynamic caching on. 4. Configure the Cache Accelerator using the appropriate options. Refer to the online help for more information on each option. 5. Restart the server to use the new settings. • To edit the configuration file: 1. Open the httpd.conf configuration file. 2. Set the EnableFRCA directive on. 3. To configure the Cache Accelerator, use the FRCA directives. • Monitoring and managing the Cache Accelerator Two resources for monitoring and managing the Cache Accelerator are Resource Measurement Facility (RMF) reports and output from the DISPLAY TCPIP command. • RMF reports The WLM enclave created for the Cache Accelerator is a scheduled SRB. Therefore, to manage the Cache Accelerator workload, you need one service class period that has an execution velocity goal. The RMF report will show no transactions, and CPU information will be included under TCB CPU consumption. For more information on RMF, see the RMF User's Guide. • DISPLAY TCP/IP command To display information on the Cache Accelerator enter: D TCPIP,FRCA_stack_name,NET,CACH For FRCA_stack_name, specify the name of the OS/390 UNIX physical file system that supports the TCP/IP stack used by the Cache Accelerator, for example, TCPV34. This is the name that appears on the FRCAStackName directive in the server configuration file. Web server—troubleshooting/hints/tips 227 Sample output: D TCPIP,TCPV34,NET,CACH EZZ2500I NETSTAT CS V2R7 TCPV34 324 CLIENT: WEBSRV3 LISTENING SOCKET: 0.0.0.0..8137 MAXCACHESIZE: 0000002500 CURRCACHESIZE: MAXNUMOBJECTS: 0000000200 CURRNUMOBJECTS: NUMCONNS: 0000002116 CONNSPROCESSED: CONNSDEFERRED: 0000000540 CONNSTIMEDOUT: REQUESTSPROCESSED: 0000002116 INCOMPLETEREQUESTS: NUMCACHEHITS: 0000001576 NUMCACHEMISSES: NUMUNPRODCACHEHITS: 0000001576 1 OF 1 RECORDS DISPLAYED 0000000120 0000000045 0000001576 0000000000 0000000000 0000000540 Figure 119. Command output: D TCPIP,TCPV34,NET,CACH For more information on DISPLAY TCPIP output fields, see the TCP/IP OE User's Guide. Place frequently referenced files in memory cache Note If you are using the Fast Response Cache Accelerator for dynamic caching, you do not need to use the tips described in this section. When the Web server starts, it places specified files in a memory cache. Then, when a file is requested it can be retrieved from the cache, rather than from the disk Hints and tips • When specifying the files you want cached, you might also need to increase the default maximum bytes and maximum files limits. To increase the default maximum limits, use the CacheLocalMaxBytes and CacheLocalMaxFiles settings. • To specify which files are cached, edit the configuration file by adding more CacheLocalFile statements. Example: CacheLocalFile /usr/lpp/internet/server_root/pub/file1k.html You can specify an asterisk (*) for some parts of the data set name. For example, to apply CacheLocalFile to all the html files in the ../cachedir/ directory, specify: CacheLocalFile /usr/lpp/internet/server_root/cachedir/*.html If you have a lot of different directories containing files that you want to cache, the following technique might be useful. An example is the SPECweb workload. You might want to cache all class 0, 1, and 2 files because they are smaller and are referenced more frequently, while you might not be able to cache the larger class 3 files due to memory limits. To cache class 0, 1, and 2 files for SPECweb, you would want something similar to: # cache all class 0 files CacheLocalFile /specdata/file_set/dir0/class0* CacheLocalFile /specdata/file_set/dir1/class0* 228 Debugging UNIX Applications on OS/390 # in "dir0" # in "dir1" ... CacheLocalFile /specdata/file_set/dir117/class0* # cache all class 1 files CacheLocalFile /specdata/file_set/dir0/class1* CacheLocalFile /specdata/file_set/dir1/class1* ... CacheLocalFile /specdata/file_set/dir117/class1* #cache all class 2 files CacheLocalFile /specdata/file_set/dir0/class2* CacheLocalFile /specdata/file_set/dir1/class2* ... CacheLocalFile /specdata/file_set/dir117/class2* # in "dir117" # in "dir0" # in "dir1" # in "dir117" # in "dir0" # in "dir1" # in "dir117" Suppress time stamp check for memory cached files With each reference to a file in the memory cache, the Web server can check the time stamp of the file on the disk to make sure the cached copy is current. Suppress this time stamp check for files in the memory cache. 5.4.2.4 RACF and other SAF-based security products For controlling access to Web resources on MVS, the Web server provides extensive access control support, including system validation of user IDs and passwords and access control through surrogate user ID support. Resource Access Control Facility (RACF), or an equivalent SAF-based security product, manages system and data security by verifying a user's identity and access to a resource. In general, SAF security checking with RACF, or another vendor's SAF-based security product, is recommended because it can protect the installation from unauthorized access to MVS as well as Web server resources. Users are identified by an OS/390 UNIX user ID (alphanumeric) kept in the RACF user profile, and an OS/390 UNIX group ID (GID) kept in the RACF group profile. 5.4.2.5 RACF performance suggestions If using RACF or another SAF-based security product, consider the following hints and tips: • Use surrogate user IDs, if that is acceptable from a security point of view. • If you use %%SAF%% with the PUBLIC surrogate user ID, this provides protection of your server resources without a high CPU cost. OS/390 Release 3 or greater automatically enhances performance when you use surrogate user IDs and RACF. • If you require Web clients to have a unique SAF-based user ID and password on the Web server system, specifying %%SAF%% with %%CLIENT%% will give you more robust security but at a higher CPU cost. • Put your RACF data set on a control unit with caching and the DASD fast write feature. Instructions for enabling caching are in the documentation for DFSMS. Contact your DASD support programmer. • Cache highly used pages. • If running Workload Management (WLM), make sure you permit WLM to RACF. Web server—troubleshooting/hints/tips 229 5.4.2.6 SSL performance hints and tips Secure Web server operation takes more CPU and elapsed time; use only if required. A fix for V5.0 of the Web server APAR PQ19981 corrected serialization problems when the Web server was executing large numbers of concurrent SSL handshakes. Tests indicated that when this fix was installed, the CPU time for an SSL handshake was reduced up to 30% and the throughput of SSL requests was increased up to 500% compared to V5.0 without the fix. 5.4.2.7 SSL and hardware encryption Beginning with V5.0 of the Web server, you can designate a preference order for cipher specifications using the SSLCipherSpec directive. This enables you to configure the Web server to perform DES and Triple-DES encryption using hardware encryption. For information on enabling this support on the Web server, see the Web server documentation. Tests indicated that some workloads did not exhibit performance benefits when hardware encryption was used for securing the data in an SSL session. This may be true of workloads that do not have persistent SSL sessions and contain many small files. Installing V5.0 (with fixes for APARs PQ19981 and PQ22108) or later releases of the Web server will greatly enhance the benefit of cryptographic hardware exploitation. It is the handshake phase of SSL that makes use of digital certificates and performs asymmetric (private key) decryption. The V5.0 fix for APAR PQ22108 enables hardware encryption for these SSL private key operations. The PTFs also include additional SSL performance items. The PTF numbers for this APAR are UQ25474 (base Web server) and UQ25475, UQ25476, UQ25477 for the U.S., export, and France Web servers. In conjunction with these Web server PTFs, you will also require the fix for OS/390 APAR OW36159. Tests showed up to a 100% throughput increase with the above V5.0 PTF fixes (compared with APAR PQ19981) and up to 80% CPU time reduction for SSL handshakes with hardware cryptography enabled. More information on SSL performance can be found on the OS/390 UNIX System Services Web site (http://www1.s390.ibm.com/unix/). 5.4.2.8 Logging guidelines In the following section we show how performance can be improved by avoiding log events that are not needed. Turn access logging off By default the Web server records that a Web browser has accessed a file in a server disk log. If you do not need this access logging, the Web server performs better if the logging is off. To set logging off, edit the httpd.conf configuration file and insert a comment character (#) at the beginning of the AccessLog line. If you are using the Fast Response Cache Accelerator for dynamic caching, you can turn access logging off but use the FRCA Access log to log only requests served from the Cache Accelerator cache. 230 Debugging UNIX Applications on OS/390 Suppress access logging from selected browsers If you must log accesses for some cases, the Web server performs better if you suppress logging for those cases where you can. There are several methods for configuring which accesses should not be logged. For example, to suppress logging from all browsers with IP addresses 9.*.*.* using the configuration and administration forms: 1. Click Logging and Reporting. 2. Click Access Log File Configuration. 3. For Exclusions from the Access log, enter 9.*.*.* in the Host name or IP address field. Turn agent logging off To turn agent logging off, edit the configuration file and insert a comment character (#) at the beginning of the AgentLog line. Turn referer logging off To turn referer logging off, edit the configuration file and insert a comment character (#) at the beginning of the RefererLog line. 5.4.2.9 Resource mapping templates When the Web server begins processing a request, it searches the directives specified in the configuration file. This search time can be reduced for specific URL subdirectories by placing corresponding Pass directives closer to the top of the configuration file. Using the workload SPECweb for example, you could place the following directive just before user authentication and document protection directives: Pass /file_set/* /specdata/file_set/* Then when a request comes in for http://server_name/file_set/.. (from the first parameter of the above Pass directive), the Web server will get to the operating system files, /specdata/file_set/* (from the second parameter of the above Pass directive), more quickly. This occurs because the Pass statement is placed above the authentication directives so the server saves some authentication processing. SPECweb does not require authentication of its files. Be cautious with this approach. For example, if a general Pass directive, such as Pass /*, is moved to the top, then subsequent, more specific directives will be ignored. To reduce the search time, edit the configuration file and locate the appropriate Pass statements. 5.4.2.10 Additional guidelines Here are additional performance issues. Increase listen backlog In the Web server proc, -lb n sets the Listen Backlog to n. Also, SOMAXCONN in the TCP/IP profile member must be greater than n because it sets an upper limit for the -lb Web server parameter. We used -lb 50, and SOMAXCONN 1024. Web server—troubleshooting/hints/tips 231 Increase MAXFILEPROCS Change MAXFILEPROCS from 64 to 65535 by editing SYS1.PARMLIB(BPXPRMxx). Put recommended LE modules in LPA For LE 1.6, see "Appendix F Modules Eligible for the Link Pack Area" in OS/390 Language Environment for OS/390 and VM Run-Time Migration Guide, SC28-1944. Adjust TCP/IP dispatching priority Set the dispatch priority of TCP/IP equal to one less than VTAM with nothing else (like JES) in between TCP/IP and VTAM. If you are not using WLM (that is, your system executes in WLM compatibility mode), you can specify dispatching priority in the IEAIPSxx member of SYS1.PARMLIB. You should create a performance group for the Web server. Then use the IEAICSxx member of PARMLIB to assign the Web server to this performance group. If your system runs in WLM GOAL mode, you should specify a velocity goal for the Web server that is lower than the VTAM velocity goal. TCP/IP packet sizes >= 4 KB. The Web server uses a block size of 4 KB for TCP transmission. Make sure your TCP/IP parms allow >= 4 KB packet sizes. Store HTML files in ASCII format If possible store your HTML files in ASCII format and name the files with a suffix of .ascii. Your users should specify a URL with the fully qualified name, including the .ascii suffix. If users do not include the suffix, expensive multiformat processing will be done by the Web server. During the caching process, the Web server does not convert data to ASCII. Therefore, there is a performance benefit to storing them in ASCII. You need to decide if the performance benefit outweighs the convenience of having the files in EBCDIC so you can more easily edit the files on OS/390. You can use the utility EDCICONV to convert your text files to ASCII format. Minimize directory depth The Web server uses the file system when accessing a file. If the Pass directive being used for a particular file has a deep operating system directory structure, the file system opens and checks security at each level each time the file is accessed. Reduce this processing by placing the files in directories with a shallow directory structure. This will not help files that are already covered by LiveLocalCache off because the file system is not consulted. To reduce the file system subdirectory searching, place files in directories that are closer to the root directory. Optimize directory listings If your Web server is returning directory listings, avoid some of the slower options. Edit the configuration file and set the following directives off: • DirReadme • DirShowDate • DirShowIcons 232 Debugging UNIX Applications on OS/390 • DirShowDescription Shorten the persistent timeout Edit the configuration file and reduce the value of the PersistTimeout directive from 1 minute to 10 seconds. 5.5 Tips for enabling WebSphere Application Server under OS/390 The following information is intended to help you implement servlet support. The information in this section applies only to WebSphere Application Server. First, some background information. WebSphere Application Server is not a Web server in itself. To use WebSphere Application Server, a Web server must also be running. Under OS/390 R5 and R6, the only Web server that supports WebSphere Application Server is Domino Go Webserver (DGW) R5. WebSphere Application Server is intended to replace ServletExpress. Under OS/390 R5 and R6, WebSphere Application Server is nearly identical to ServletExpress, except that it has corrections integrated into it that are provided as PTFs for ServletExpress, along with other coding improvements. If WebSphere Application Server is to be installed on a system that already has ServletExpress installed, then ServletExpress can be removed from the system by using the jobs that are supplied in the WebSphere Application Server package. WebSphere Application Server also includes a job that migrates the ServletExpress configuration files to WebSphere Application Server files. This information is intended to supplement the basic installation and verification instructions provided by: • WebSphere Application Server Program Directory http://www.software.ibm.com/webservers/appserv/hejsw10.htm • WebSphere Application Server for OS/390 Getting Started http://www.software.ibm.com/webservers/appserv/doc/os390/os1gsldw.htm • WebSphere Application Server Checklist http://www.software.ibm.com/webservers/httpservers/doc/v51/twasck.htm 1. Use JDK 1.1.6 in conjunction with WebSphere Application Server. Do not use earlier releases of the JDK. You can find out your JDK level by entering the following command at an OMVS shell command prompt: java -fullversion 2. Ensure that all required JDK, DGW, WebSphere Application Server, and Language Environment (LE) PTFs are installed. The required PTFs are subject to change at any time. The following search words can be used to obtain lists of APARs and PTFs for the Web server products: DGW 5.0 base (for OS/390 R5, R6) "5697D4300 500" WebSphere Application Server for DGW 5.0 under OS/390 R5, R6 "5697D4300 W10" Web server—troubleshooting/hints/tips 233 (must be downloaded from web) JDK 1.1.6 under OS/390 R4, R5 "5752MJAVA 11C" JDK 1.1.6 under OS/390 R6 "5752MJAVA 11D" In addition, ensure that the PTFs (or the appropriate PTFs that supersede them) listed in the DGW Program Directory and listed in the PSP bucket (orderable from IBM software support) are installed. Do not overlook the LE PTFs that are listed in the Program Directory. The WebSphere Application Server Program Directory specifies that PTFs UQ23043 and UW50654 are required. Do not disregard this requirement. It is not possible to even perform the SMP/E installation of the WebSphere Application Server without these PTFs. In addition, we recommend that PTF UQ27624 be applied. PTF UQ27624 is mandatory for environments in which the OS/390 FTP client is not available (such as when using a non-IBM TCP/IP suite). In addition to correcting allocation problems, PTF UQ27624 allows the WebSphere Application Server distribution file to be unpacked directly on to the OS/390 system by replacing the "ftp" command in the IMWJWEB job with a "file" command. For example, if the ejsw10.bin file is copied to a sequential data set called SMITH.EJSW10.BIN, then the IMWJWEB job can be used to unpack the data set directly on the OS/390 system by using the following command format in the IMWJWEB job: rfget file://SMITH.EJWS10.BIN + WEBAS + volume(MVSCA2) unit(3390) The above example results in the rel files being placed under the HLQ of WEBAS on volume MVSCA2 on unit type 3390. 3. Ensure that the host name of the OS/390 system is either registered on the site's domain name server, or listed in the appropriate hosts file (such as /etc/hosts). If a domain name server is being used, ensure that both an "A" record and a "PTR" record are defined on the domain name server for the OS/390 system host name. Servlet support performs a reverse DNS (or host table) lookup during initialization, and if the IP address of the OS/390 system cannot be resolved back to a valid host name, servlet initialization will fail. Also ensure that the /etc/resolv.conf file is properly configured with a "domain" directive and at least one "nameserver" directive. 4. The WebSphere Manager applet provides a graphical interface that allows many servlet-related parameters to be modified. The actual parameters that control operation of WebSphere Application Server are located in the files that are in the directory: /usr/lpp/WebSphere/AppServer/properties /server/servlet/servletservice Generally, you can use the WebSphere Manager applet (which is accessed by connecting to port 9090 of the Web server host) to update servlet-related parameters. Be aware, however, that it is possible to make changes to the WebSphere Application Server control files that will then prevent WebSphere Application Server from operating. If this happens, then you will be unable to correct the problem by running the WebSphere Manager applet, because it will not be accessible (a "catch-22" situation). Therefore, we recommend that you make a backup copy of the WebSphere Application Server parameter files 234 Debugging UNIX Applications on OS/390 before running the WebSphere Manager. This can be done by entering the following commands at your OMVS shell prompt: cd /usr/lpp/WebSphere/AppServer/properties/server/servlet cp -R servletservice servletservice.backup 5. Modify the jvm.properties file to increase the number of threads available to the JVM. The jvm.properties file is located in the directory: /usr/lpp/WebSphere/AppServer/properties/server/servlet/servletservice 6. In the httpd.conf file, change: MaxActiveThreads=100 (at least) 7. In the SYS1.PARMLIB(BPXPRMxx) member, change: MAXTHREADTASKS(5000) MAXTHREADS(10000) (at least greater than the combination of ncf.jvm.threads.max + MaxActiveThreads) (at least = to MAXTHREADTASKS x 2) 8. If starting the Web server using JCL, specify on the PARM= statement: PARM='STAC(200k),STOR(,,,8k),LIBS(1k,1k),BE(400k,50k,keep)/' Note DGW parms can be added after the '/'. LE parms are specified prior to the '/'. If starting httpd from an OMVS shell session, add the following to the /etc/profile or your own .profile file: _CEE_RUNOPTS="STACK(200k),STORAGE(,,,8k),LIBSTACK(1k,1k), BELOWHEAP(400k,50k,keep)" 9. When accessing the WebSphere Manager applet, use Netscape V4.04 or above. At present, no release of Internet Explorer can be used to reliably access the WebSphere Manager applet. Even IE 4.01-SP1 cannot be used to reliably access the WebSphere Manager applet. 10.The WebSphere Manager is normally accessed using port 9090. The port number can be changed using the WebSphere Manager applet, but if port 9090 is not initially available for some reason, then you will not be able to change the port (catch-22) using the WebSphere Manager applet. In such a case, the port can be changed by modifying the following parameter: In directory: /usr/lpp/WebSphere/AppServer/properties/server/servlet/adminservice Edit the following file: admin_port.properties Change the parameter "endpoint.main.port" to refer to an available port, for example: endpoint.main.port=4040 11.If you are unable to connect to the WebSphere Manager, check to be sure that it is really listening by running the "netstat" command. You should see the Web server running on port 80 (typically), and the WebSphere Manager running on port 9090 (typically). If you do not see programs listening on those Web server—troubleshooting/hints/tips 235 two ports, then check your Web server joblog (produced by setting the "-vv" option in the PARM in the Web server startup proc) for errors. 12.If you enter invalid data into WebSphere Manager, or if a defective file (such as a bad .jar file) is loaded into WebSphere Application Server, then it is possible that you will be unable to restart the Web server or the WebSphere Manager applet. To resolve this problem, you will need to manually edit the WebSphere Manager data files and remove the offending entry. The files are located in the directory: /usr/lpp/WebSphere/AppServer/properties/server/servlet/servletservice The critical parameters are in the jvm.properties file. You can refer to the backup files that you made in step 4 to help resolve the problem. 5.6 Information sources In the following sections we show where to find information about Web servers in the OS/390 environment. 5.6.1 Redbooks The following redbooks are available: • Global Server Certificate Usage with OS/390 Webservers, SG24-5623 • OS/390 Version 2 Release 4 Performance Figures for CICS Web-Enabled Applications, SG24-5612 • IMS e-Business Connect Using the IMS Connectors, SG24-5427 • Developing an e-Business Application for the IBM WebSphere Application Server, SG24-5423 • e-business Application Solutions on OS/390 Using Java: Samples, SG24-5365 • e-business Application Solutions Using Java: Volume 1, SG24-5342 • OS/390 Workload Manager Implementation and Exploitation, SG24-5326 • Accessing DB2 for OS/390 Data from the World Wide Web, SG24-5273 • CICS Transaction Server for OS/390: Web Interface and 3270 Bridge, SG24-5243 • Internet Security in the Network Computing Framework, SG24-5220 • Capacity Planning for CICS Web-Enabled Applications on OS/390, SG24-5168 • Ready for e-business: OS/390 Security Server Enhancements, SG24-5158 • Net.Commerce for OS/390, SG24-5154 • IP Network Design Guide, SG24-2580 • Software Configuration Management, A Websphere Development Example Using Visual Age TeamConnection Enterprise Server, SG24-5473 • Connecting Domino to the Enterprise Using Java, SG24-5425 • Using VisualAge for Java Enterprise Version 2 to Develop CORBA and EJB Applications, SG24-5276 236 Debugging UNIX Applications on OS/390 5.7 Useful Web sites Within these Internet pages you should find all the latest and very helpful information on the WebSpere Application Server and the Domino Go Webserver. http://www.software.ibm.com/webservers http://www.software.ibm.com/webservers/httpservers http://www.software.ibm.com/webservers/httpservers/doc http://www.software.ibm.com/webservers/dgw http://www.fastcgi.com Web server—troubleshooting/hints/tips 237 The following Web page is the most current and up-to-date checklist regarding maintenance, troubleshooting, preventive service plan as well as product and other related documentation: http://www.software.ibm.com/webservers/dgw/doc50.htm#WSTG Figure 120. IBM WebSphere troubleshooter for OS/390 5.7.1 Informational APARs These two APARs contain a lot of information regarding the common error message 02af and setting up the servletexpress manager. • II11345—additional information on installing Lotus Domino Go Webserver including servletexpress manager • II10548—environment dirty bit caused by load of uncontrolled module from the hfs tcbnctl set by UNIX System Services ( error 02af ) 238 Debugging UNIX Applications on OS/390 Chapter 6. Network File System (NFS) In this chapter we inform you about the OS/390 NFS server and the OS/390 client. In addition we give information on how to install and use this product. Helpful debugging hints and tips are included from experience in supporting both products. Note See the debugging hints in each chapter and see 6.1.12, “Debugging” on page 249 for information on how to debug and solve problems. Client systems in a TCP/IP network that support the NFS client protocol can use traditional MVS data sets and UNIX System Services HFS files as part of their file system. Since OS/390 Release 2.6, the SUN NFS Version 3 Protocol is supported, in addition to the current support of NFS Version 2. Consequently, NFS can be regarded as a good tool for transferring data across many different platforms, including OS/390, UNIX systems, and Windows NT. The major difference between the Windows NFS clients and UNIX clients is that on the PC, the NFS code is installed as a separate piece of software, and the mounts are accessed from a GUI administration window. On UNIX, the NFS client code is standard, and administration is typically done from the command line using the mount and other commands. 6.1 Setting up the OS/390 NFS server environment In the following sections we inform you how to set up and customize the NFS server. The server runs stateless as a single started task. The NFS Server since OS/390 Release 6 has FMID HDZ11TS. It uses OE-Sockets and supports both HFS and traditional MVS data sets. 6.1.1 Environment examples Figure 121 on page 240 shows the work configuration that we set up to test these various solutions. The host S/390 system is shown at the top right, and the middle tier servers, used for the three-tier solutions, are shown at the middle left. Eight clients on the 16 Mbps token-ring and on the 100 Mbps fast Ethernet LANs are shown at the bottom. The Windows NT server also acted as a router between the token-ring, fast Ethernet LANs, and FDDI LANs. © Copyright IBM Corp. 1999 239 NFS Network Configuration 9672 model R75 OS/390 V2 R5 10.1.1.201 (TCP HSAS) or 100Mb FDDI 10.1.1.202 (regular TCP) OSA-2 FDDI 10.1.1.175 DASD DASD 3390-3 3390-3 OSA-2 T/R or Ethernet DASD DASD 3390-3 3390-3 skNet FDDI AIX or NT Servers: PC 330 Windows NT 4.0 Server with Maestro NFS Gateway 10.1.3.3 10.1.3.5 10.1.3.100 16Mb T/R 10.1.3.6 10.1.3.4 10.1.3.1 10.1.3.2 Clients: PC 750 Windows NT 4.0 WS PC 350 Windows 95 PC 350 Windows NT 4.0 WS Aptiva P200 Windows NT 4.0 WS Figure 121. NFS network configuration A network of computers was set up as shown in Figure 122 on page 241 to test the NFS solution. It implements two kinds of TCP/IP stacks and interfaces: FDDI and token-ring. The clients included Windows NT 4.0 and Windows 98 workstations. The two-tier solution requires that the NFS client code can be installed on all clients. The three-tier solution requires that the NFS “gateway” code be installed on the middle tier Windows NT server. 240 Debugging UNIX Applications on OS/390 NFS SM B AIX or NT OS/390 NT Server w/ NFS Gateway NFS W indows w/ N FS C lient W indows (SMB) Client NFS 3 tier NFS 2 tier Figure 122. NFS 2-tier versus 3-tier overview 6.1.2 Enable TCP/IP and the portmapper Since the OS/390 NFS server uses the UNIX System Services Sockets ensure that the connection between TCP/IP and UNIX System Services is established before you start the NFS server. NFS uses the TCP/IP RCP protocol for client-server communication. This is why the portmapper function has to be enabled. If not already done, copy the sample PORTMAP procedure from hlq.SEZAINST(PORTPROC) to your procedure library. PORTMAP needs read access to the hlq.ETC.RPC file. Copy it from the hlq.SEZAINST(ETCRPC) file. Add the entries to the hlq.ETC.RPC file for the service provided by the NFS server. See Figure 123. Service ------NFS mountd mvsmount showattrd pcnfsd Number -----100003 100005 100044 100059 150001 Description -----------NFS daemon Mount daemon daemon for mvslogin and mvslogout showattr daemon pcnfs daemon Figure 123. Modifying the hlq.ETC.RPC file Network File System (NFS) 241 6.1.2.1 Possible problems • The Portmap started task does not come up as indicated by the message: ICH408I OMVS segment (user) failed Solution: Issue the following commands to authorize the procedure: SETROPTS GENERIC(STARTED) RDEFINE STARTED PORTPPROC.* STDATA(USER(TCPIP) GROUP(SYS1) TRUSTED(YES) SETROPTS CLASSACT(STARTED) RACLIST(STARTED) SETROPTS RACLIST(STARTED) REFRESH For more information see, "Preparing for Security" in OS/390 UNIX System Services Planning, SC28-1890. • Portmap cannot bind indicated by message EZY4063E PERMISSION DENIED (EACCES) Solution: Some hints point to TCP/IP’s Obey file, but using the Communication Server 2.7 to redefine the Obey file does not solve the problem. After changing the settings for the portmapper in the TCP/IP profile see Figure 124; the problem was solved. PORT 111 TCP OMVS 111 UDP OMVS ; Portmap Server ; Portmap Server Figure 124. Port definitions for the portmapper For more information see OS/390 eNetwork Communications Server IP Configuration, SC31-8513. 6.1.3 RACF profiles The NFS procedure must be known and authorized as a user and a started task to the system as the portmapper. See 6.1.2, “Enable TCP/IP and the portmapper” on page 241. 6.1.3.1 Setting up the NFS started task as an authorized user The authorization can be done twice using RACF through panel or command using a batch job. See Figure 125 on page 242 through Figure 131 on page 244 as examples of using the panels. RACF - SERVICES OPTION MENU 4 USER PROFILES AND YOUR OWN PASSWORD Figure 125. RACF primary option menu 242 Debugging UNIX Applications on OS/390 1 ADD Add a user profile ENTER THE FOLLOWING INFORMATION: USER ===> NFSUSER User ID Figure 126. RACF user profile services OWNER ===> HOERNER User ID or group name USER NAME ===> NFS DEFAULT GROUP ===> SYS1 Group name PASSWORD ===> ===> User's initial password Re-enter password to verify Figure 127. RACF add an NFS user GROUP ACCESS ADSP OIDCARD NO-PASSWORD ===> ===> ===> ===> NO NO NO NO SPECIAL OPERATIONS AUDITOR ===> NO ===> YES ===> NO IDENTIFY THE MODEL PROFILE FOR USER DATA SETS (OPTIONAL): MODEL PROFILE ===> TO CREATE THE FOLLOWING, ENTER YES (OPTIONAL): A GENERIC DATA SET PROFILE A MINIDISK PROFILE TO ADD OPTIONAL INFORMATION, ENTER YES ===> NO ===> NO ===> YES Figure 128. Set operations _ CICS PARAMETERS _ WORK ATTRIBUTES s OMVS PARAMETERS Figure 129. Select to set up the OMVS segment Enter User Identifier (UID) below, then press ENTER: USER IDENTIFIER ===> 0 0 - 2147483647 Figure 130. Add OMVS parameters Network File System (NFS) 243 UID= 0000000000 HOME= / PROGRAM= /bin/sh Figure 131. Add OMVS parameters Note The need for this definition is in process by the NFS development. The authority of TRUSTED instead of OPERATIONS for the NFS started task and the UID other than 0 for the NFS server is actually in testing error. For more information see: • "Preparing for Security" in OS/390 UNIX System Services Planning, SC28-1890. • " Protecting Your Data" in OS/390 NFS Customization and Operation, SC26-7253. 6.1.4 Customize the OS/390 NFS server startup procedure Copy the sample MVSNFS procedure from hlq.NFSSAMP(GFSAPROC) to your procedure library and customize it. Assign a user ID to the NFS procedure with an OMVS segment. See the sample of the procedure for more information on how to customize it. 6.1.5 Security using the NFS server 6.1.5.1 OS/390 NFS security levels Note Since OS/390 2.6 the DEFAULT security level has changed from NONE to SAFEXP. The four levels are the same, but their usage has changed. See the NFS documentation in 6.3, “Documentation” on page 263 for more details. Four different security levels can be selected in the MVS NFS attributes data set: • NONE—Neither SAF checking nor exports list checking. For HFS, checks UNIX permission bits; obtains the UID from the client RPC request. • SAF—SAF checking. No exports checking. For HFS, checks UNIX permission, the UID from the OS/390 UNIX segment using mvslogin. • EXPORTS—Exports list checking. For HFS, checks UNIX permission bits for HFS data; obtains the UID from the client RPC request. No SAF checking. • SAFEXP—SAF checking and exports list checking. For HFS, checks UNIX permission bits; obtains the UID from the OS/390 UNIX segment using mvslogin. 244 Debugging UNIX Applications on OS/390 Recommendation: When using NFS for the first time set the security to NONE to see whether you can access the data as expected. There will be no mvslogin/mvslogout commands necessary for all of the client platforms. The customer will only need to turn on pcnfsd (from nopcnfsd) in the attribute file when initializing the OS/390 NFS server. This pcnfsd is an existing support for the most client platforms. For additional information see OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178. For the most common security problems see 6.1.12.4, “Known problems” on page 252. 6.1.5.2 HFS security exit Today the security exit GFSAUXF is not called for HFS files. It will be called for HFS files next. 6.1.6 BPXPRMxx parmlib member In this section we inform you about the settings in the BPXPRMxx parmlib member. During UNIX System Services file system initialization, the FILESYSTYPE statement for the network in the SYS1.PARMLIB(BPXPRMxx) member may have incorrect port information. This causes a DFSMS/MVS NFS Server and/or Client communication problem. Figure 132 shows an example of a filesystype statement: FILESYSTYPE TYPE(INET) ENTRYPOINT(BPXTCINT) NETWORK DOMAINNAME(AF_INET) DOMAINNUMBER(2) MAXSOCKETS(64) TYPE(INET) INADDRANYPORT(2000) INADDRANYCOUNT(325) Figure 132. Example of a filesystype statement in the BPXPRMxx member The statement in Figure 132 causes OS/390 UNIX to reserve a range of ports starting at 2000 until 2324. DFSMS/MVS NFS port 2049 happens to be within this reserved range. This causes port 2049 to be unavailable to DFSMS/MVS NFS. This causes the communication problem. Choose instead another unused port range (INADDRANYPORT,INADDRANYCOUNT). For more information see the NFS APARs mentioned in 6.3, “Documentation” on page 263. 6.1.7 Starting the NFS server Ensuring that the NFS server comes up correctly is indicated by the messages shown in Figure 133 on page 246. If the server does not start see 6.1.12.4, “Known problems” on page 252. Network File System (NFS) 245 BPXI004I OMVS INITIALIZATION COMPLETE EZZ4202I OPENEDITION-TCP/IP CONNECTION ESTABLISHED FOR TCPIP6 ::::::::::::::::::::::: $HASP373 PORTPROC STARTED IEF403I PORTPROC - STARTED - TIME=22.44.34 GFSA348I OS/390 NETWORK FILE SYSTEM SERVER (HDZ11TS) STARTED. Figure 133. Server messages in the log 6.1.8 Mount In this section we mention some common information about how to mount a data set on the OS/390 system. 6.1.8.1 Mounting a file system within OS/390 UNIX It is possible to mount an existing directory or a mounted file system (see the examples in 6.1.8.2, “Mount from an NFS client” on page 247). From the mount itself there is no difference, but a file system must be mounted within OS/390 UNIX before. • The HFS data set used as the file system must be allocated in prior. - Allocate an additional HFS data set, using either: + A TSO/E ALLOCATE command ALLOCATE DATASET('OMVS.USER.JOE') DSNTYPE(HFS) SPACE(5,5) DIR(1) CYL + A JCL DD statement Free the data sets and use the TSO/E MOUNT command under a superuser ID to logically mount the new file system in the directory of an existing file system. For example, the directory /u/joe is a mount point for OMVS.USER.JOE and /u/jane is a mount point for OMVS.USER.JANE. The mount point must be a directory. If it is not an empty directory, files in that directory are not accessible while the file system is mounted. • The FREE commands for the mounted file systems are: FREE DATASET('OMVS.USER.JOE') FREE DATASET('OMVS.USER.JANE') Figure 134 shows a example how to mount a file system: MOUNT FILESYSTEM('OMVS.USER.JOE') TYPE(HFS) MOUNTPOINT('/u/joe') MOUNT FILESYSTEM('OMVS.USER.JANE') TYPE(HFS) MOUNTPOINT('/u/jane') Figure 134. Example to mount a file system within OS/390 UNIX For more information see "Mounting File Systems in the File Hierarchy" in OS/390 UNIX System Services Planning, SC28-1890. 246 Debugging UNIX Applications on OS/390 6.1.8.2 Mount from an NFS client To issue a mount from an NFS client see " Mounting MVS Data Sets onto a Client Mount Point" in OS/390 Network File System Customization and Operation, SC26-7253. For examples about the syntax to issue a mount from an NFS client see, OS/390 Network File System User's Guide, SC26-7254. To issue a mount from the OS/390 NFS client see 6.2.4, “MOUNT” on page 258. Note It is in process that a mount can be issued for a data set on the OS/390 system using both binary and text as mixed conversion (see the forum on the Internet at http://itsont2.itso.ibm.com ). 6.1.9 HFS data set In this section we give brief information about the HFS data set itself. 6.1.9.1 DFSMS/MVS Since DFSMS/MVS 1.5, support is available for a multivolume HFS data set. Use DFSMS/MVS 1.5 to get the latest HFS enhancements. For more information see the DFSMS/MVS books in 6.3, “Documentation” on page 263. 6.1.9.2 Allocation An HFS data set can be allocated using TSO ALLOCATE command (see 6.1.8.1, “Mounting a file system within OS/390 UNIX” on page 246) or using ISPF 3.2. Figure 135 and Figure 136 on page 248 show examples of using ISPF 3.2 to allocate an HFS data set: Data Set Utility A Allocate new data set blank Data set information C Catalog data set M Allocate new data set Other Partitioned, Sequential or VSAM Data Set: Data Set Name . . . HFS.TEST Option ===> M Figure 135. Select option M Network File System (NFS) 247 Allocate New Data Set More: Data Set Name . . . : HOERNER.HFS.TEST Data set name type : HFS (LIBRARY, HFS, PDS, or blank) * Figure 136. Define the data set type HFS Note An HFS guide as a redbook will be available to describe in more detail the usage of an HFS data set. See http:/www.redbooks.ibm.com. For more information about HFS data sets, see the DFSMS/MVS documentation in 6.3, “Documentation” on page 263. 6.1.10 Performance This section has some hints and tips to improve performance. • Using the NFS server FMID HDZ11TS ensure that the APAR OW38745 is installed. • The overall performance belongs to the network also. Check the settings within the network based on the information given in the environmental checklist in OS/390 Network File System Customization and Operation, SC26-7263, and in OS/390 Network File System Performance Tuning Guide, SC26-7255. • The Maximum Transmission Unit (MTU) on the whole network is an important factor to influence the performance at all. Note See the OS/390 Network File System Performance Tuning Guide, SC26-7255, for some recommendations regarding the network environment. • Since OS/390 2.5 the TCP/IP is known as the Communication Server 2.5. Ensure that all the CS PTFs are installed. • Accessing HFS data sets changes the default for the USS option FORKCOPY in the BPXPRMxx parmlib member dynamically from COW to COPY by using the SETOMVS command. • Ensure that the DEBUG9 trace is switched off using INFO again. • The following attributes from the NFS attribute file should be set cachewindow(256), logicalcache(128M), bufhigh(128M), nfstasks(16,8), percentsteal(20) • For additional performance hints tuning, especially the UNIX System Services environment, see: • OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178, using: 248 Debugging UNIX Applications on OS/390 •http://www.s390.ibm.com/products/oe/bpxpftgt.html For more information see: http://SSDDOM01.storage.ibm.com/TechSup/techdocframes.nsf?OpenDatabase OS/390 Network File System Performance Tuning Guide, SC26-7255 OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178 6.1.11 Supported clients for the OS/390 NFS server Network File System client software for other IBM platforms is available from other vendors. You can also access the DFSMS/MVS NFS server from non-IBM clients that use/support the SUN NFS Version 2 protocol (with OS/390 V2R6 the NFS server supports the NFS Version 3 protocol). Windows will be added to the list of supported platforms in upcoming releases along with a list of suggested or tested third-party vendors who provide NFS Client such as FTP Software's Interdrive Windows 95 and Windows NT, HummingBird’s Maestro for Windows 95 and Windows NT, etc.. As there are hundreds of NFS vendors in the market, it is impossible to test them all; hence, we only provide a list of suggested or tested vendor products. There is no additional work to IBM other than for us to verify that these NFS Client products installed on our Windows 95 and Windows NT machines as said in the CD-ROM/manual, follow instructions as stated in their README/manual so that their NFS client can communicate and work with our OS/390 NFS Server. Any questions regarding usage of NFS on Windows platform should be asked directly to third-party vendors such as HummingBird or FTP software. Those products provide the GUI front-end interface to make the necessary connection (mount) to NFS servers and display the remote files. They also provide another front-end to set up users' uid/gid, permission mode bits. Questions such as: • How do I mount an NFS file system? What's the correct syntax? ", or • "Nothing is displayed on My Computer? What's wrong?" should be directed to the third-party vendors, not IBM. 6.1.12 Debugging In this section we describe the documented commands to debug server-related problems and give additional helpful information to analyze problems. 6.1.12.1 Hints and tips • Ensure that all available maintenance for the FMID HDZ11TS is installed. • To diagnose an NFS problem see "Diagnosing and Reporting Problems" in OS/390 Network File System Customization and Operation, SC26-7253. In the most cases the NFS DEBUG9 trace is very helpful to analyze a server-related problem. Sometimes a simple find, for example, "error" or the debug messages with a suffix of (E) points to a problem. Network File System (NFS) 249 Figure 137 on page 250 shows an example of an NFS server trace. GFSA301I (D) NFS_REQ WRITE(69153E38):FH(B22124E8 0E85311E B221 GFSA301I (D) NFS_REQ WRITE(69153E38):C2800078 005A001E) PATTR(BL MAPLOW LF TXT MAPDOT ) GFSA301I (D) NFS_REQ WRITE : (69153E38) : OFF(0) CNT(3310) TOT(3310) 14:26:15 GFSA304I (D) REQUEST 1B4CA260 GENERATING NFS ERROR (5) NFSERR_IO 5695DF121_____ R1SM <-CMP-REL CS*ESS Mr.Stollenwerk_______ <-CON *IBM IN DUE TO ERRNO (5) I/O ERROR GFSA899I (E) : BLANKSTRIP MODE: TRAILING BLANK(S) IN RECORD 46 IS NOT ALLOWED. GFSA899I (E) : DSN = SPFIT.RZ4.P0.PROD.DEVNN.SRC(JJO265) GFSA304I (D) : LUB 1B4752E0: ERRNO = 5 :::::::::::::::::::::::: GFSA301I (D) : NFS_REPL WRITE :(69153E38): FATTR(TYPE:0 MODE:0 LNKS:0 U: G:0 SZ:0 Figure 137. NFS server debug9 trace • Capture the debug9 trace: • Use the parm DEBUG9 instead of the default INFO in the NFS server procedure or use the Modify command /f nfs_stc,log=debug9 to activate it dynamically. • Ensure that the related log files, named as DD statements NFSLOG1 and NFSLOG2, are preallocated. See 6.1.4, “Customize the OS/390 NFS server startup procedure” on page 244. • Because using the communications server/TCP/IP as the protocol layer a packet or socket trace must be captured. For more information see Appendix A, “Tracing within TCP/IP” on page 289 and the TCP/IP documentation in 6.3, “Documentation” on page 263. Also see OS/390 eNetwork Communications Server IP Diagnosis Guide, SC31-8521, and APAR II11160. • To minimize the trace output specify only the involved IP addresses. Note For OS/390 TCP/IP OpenEdition, CTRACE replaces LESSTRACE, MORETRACE, TRACE, and NOTRACE commands. These commands still work with a V3R2 stack. 6.1.12.2 Messages and Return Codes For more information about the Messages see, Appendix A in OS/390 Network File System Customization and Operation, SC26-7253. For more information about the Return codes see Appendix B in OS/390 Network File System Customization and Operation, SC26-7253. 6.1.12.3 Helpful commands The following commands are helpful to analyze a network problem. For some commands see the outputs as an example. • PING , OPING, and OEPING 250 Debugging UNIX Applications on OS/390 The PING command shows the established connections using the IP address. The PING is a TCP/IP command. It tests connectivity of the network or routing to a remote host by sending an echo request. Figure 138 shows an example of a PING command: # ping 205.148.2.127 CS/390 V2R5: Pinging host 205.148.2.127 Ping #1 response took 0.023 seconds.This is screen. Figure 138. Output of a ping command • SHOWATTR This command displays the active NFS server attributes from the attribute file. Figure 139 shows an example of a SHOWATTR command. EH07:/usr/lpp/NFS: >showattr -t mvsa /u lrecl(8196),recfm(vb),blksize(0),space(100,10),blks,dsorg(ps),dir(27), unit(sysda),volume(),recordsize(512,4K),keys(64,0),nonspanned, shareoptions(1,3),mgmtclas(),dsntype(pds),norlse,dataclas(),storclas() Figure 139. Example of a showattr command For more information see the OS/390 Network File System User's Guide, SC26-7254. • SHOWEXPORT (known as showexp) - This command is only possible from some clients, for example, OS/2. - To display the exported directories and file systems use the command showmount. •SHOWMOUNT This command displays the server mount information or the exported directories and file systems and as with "showexport" is based on the entries in the export file. Figure 140 shows an example of a SHOWMOUNT command. >showmount -e os390s1 export list for os390s1: /ETC (everyone) /USR (everyone) Figure 140. Showmount -e <host> example For more information see the OS/390 Network File System User's Guide, SC26-7254. Network File System (NFS) 251 • RPCINFO and ORPCINFO Use the RPCINFO command to display the servers that are registered and operational with any portmapper on your network. The RPCINFO command makes a remote procedure call (RPC) to an RPC server and displays the results. Figure 141 shows an example of an RPCINFO command. tso rpcinfo -p if3 program vers proto port 100000 2 udp 111 portmapper 100000 2 tcp 111 portmapper 100059 2 udp 7000 showattrd 100044 1 udp 7001 mvsmount 100005 1 udp 7002 mountd 100003 2 udp 2049 nfsd Figure 141. RPCINFO -p <host> example For more information see OS/390 eNetwork Communications Server IP User's Guide, GC31-8514. •NETSTAT For the OS/390 NFS, the MVS TCP/IP netstat command provides information that may be useful for tuning as well. See the OS/390 Network File System Performance Tuning Guide, SC26-7255, and OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178, for more information. 6.1.12.4 Known problems In this section we mention information about known NFS server problems and their solutions. The OS/390 NFS server does not start (Message GFSA348I is missing) If you receive the message IEE132I "Cmd device allocation error" Abend047, ensure that all the defined libraries are APF authorized. AbendU4093 during startup Check your region size and ensure that the SMF exit IEFUSI does not limit your available space. Access denied • For GID and UID checking using UNIX clients see 6.1.5, “Security using the NFS server” on page 244. The GID/UID must be consistent (see APAR II09734). • Using the pcnfsd log in and authentication (see OS/390 Network File System Customization and Operation, SC26-7253, and OS/390 Network File System Users Guide, SC26-7254). • Ensure that GID/UID 0 is set in the OMVS segment and the server uses OPERATIONS security (see 6.1.5, “Security using the NFS server” on page 244). 252 Debugging UNIX Applications on OS/390 • Ensure that site attribute security is set correctly (see the Note in 6.1.5.1, “OS/390 NFS security levels” on page 244). No access to the HFS data sets If you receive the message GFSA833I: • Ensure that your HFS site attribute hfs(/prefix) is set. • Analyze your NFS Export file whether the entry is missing or incorrect. • Ensure that you have mounted the HFS file system directly because an access across a mount point is not possible (see APAR II09734). No access from the WIN NT MAESTRO client using NFS V3 If you receive the message GFSA786I (E): • Define the usage of V2 (NOV3) from the Windows NT registry file. • See APAR II11447. • Ask the OEM vendor HUMMINGBIRD for the final fix. Unpredictable results • Ensure that NFS port 2049 is not reserved. - See 6.1.6, “BPXPRMxx parmlib member” on page 245. - See the information APARs II08210, II09734, and OW22624. • Analyze the environment regarding the TCP/IP stack you are using and the related definitions. Note For addition information visit the NFS Internet page shown in Figure 142 on page 254. 6.1.12.5 Most frequently asked questions In this section we inform you where and how to find more common helpful information on the Internet. Figure 142 on page 254 shows the NFS Internet page informing you about the most frequently asked questions: Network File System (NFS) 253 Figure 142. NFS Internet page http://www.s390.ibm.com/nfs/faq/faqindex.html Click Environmental Checklist to get more information as shown on Figure 143 on page 255. 254 Debugging UNIX Applications on OS/390 Figure 143. Environmental Checklist Click one of the mentioned problems from the Problem Determination, Q&A’s Guide list shown in Figure 144 on page 256 to see the solution. Network File System (NFS) 255 Figure 144. Problem Determination, Q&A’s Guide Click Technical Support Site at the bottom of the page shown in Figure 145 on page 257 to get the page shown in figure 17 and select the NFS product. 256 Debugging UNIX Applications on OS/390 Figure 145. Technical Support Site 6.2 Setting up the OS/390 NFS client environment In this section we describe how to set up and customize the NFS client. 6.2.1 UNIX System Services The client runs as a procedure started during the UNIX System Services (USS) known as OMVS or OpenEdition. 6.2.1.1 BPXPRMxx parmlib member Since the NFS UNIX client runs under control of USS it must be defined in the BPXPRMxx parmlib member. The following entry shown in Figure 146 must be added to the BPXPRM parmlib member to start the NFS client automatically. FILESYSTYPE TYPE(NFS) ENTRYPOINT(GFSCINIT) PARM('installation parms') ASNAME(proc_name) Figure 146. NFS client BPXPRMxx parmlib member entry The procedure name shown in Figure 146 is the name of the started task in the proclib. Network File System (NFS) 257 Customize the OS/390 NFS client startup procedure. Copy the sample MVSNFS procedure from hlq.NFSSAMP(GFSCPROC) to your procedure library and customize it. Assign a user ID to the NFS procedure with an OMVS segment. See the sample of the procedure for more information on how to customize it. For more information see OS/390 Network File System Customization and Operation, SC26-7253. 6.2.2 RACF profiles The NFS client must be authorized as a user and a started task within RACF. See 6.1.3, “RACF profiles” on page 242. 6.2.2.1 Possible problems • Message ICH408I OMVS segment not defined • Message IEF450I NFSC ended ABENDSEC6 U0000 RSN11BE0026 - Solution: Define an OMVS segment and see 6.1.2.1, “Possible problems” on page 242. 6.2.3 Starting the NFS client Ensure that the NFS client comes up correctly indicated by the Messages shown in Figure 147. IF the client does not start see 6.2.5.4, “Known problems and most frequently asked questions” on page 262. BPXI004I OMVS INITIALIZATION COMPLETE EZZ4202I OPENEDITION-TCP/IP CONNECTION ESTABLISHED FOR TCPIP6 ::::::::::::::::::::::: $HASP373 NFSCR STARTED BPXI004I OMVS INITIALIZATION COMPLETE GFSC700I OS/390 NETWORK FILE SYSTEM CLIENT (HDZ11TC) STARTED Figure 147. Client messages in the log 6.2.4 MOUNT In this section we inform you about the mount using the NFS client. Use the TSO MOUNT command to make a connection between a mount point on your local HFS file system and one or more files on a remote MVS, AIX, UNIX, OS/2, OS/390, or other file system. The MOUNT command can only be used by a MVS superuser. Figure 148 on page 259 shows the complete syntax of the mount. 258 Debugging UNIX Applications on OS/390 MOUNT FILESYSTEM(file_system_name) TYPE(NFS) MOUNTPOINT(local_mountpoint) MODE(RDWR|READ) PARM('hostname:"path_name,server_attributes", options') SETUID|NOSETUID WAIT|NOWAIT Figure 148. Mount syntax Figure 149 shows an example of a mount using the NFS client. mount filesystem(’omvs.usr1.hoer’) type(nfs) mountpoint('/usr') parm('mcevsd:soft,timeo(100)') Figure 149. Example of a mount For more information about the mount and its operands see the OS/390 Network File System User's Guide, SC26-7254. 6.2.5 Debugging In this section we describe the documented commands to debug client-related problems and give additional helpful information to analyze problems. 6.2.5.1 Hints and tips • Ensure that all available maintenance for the FMID HDZ11TC is installed • Capture the NFS client trace: To store the client trace both trace data sets of the NFS client procedure, named as the DD statements NFSCMSG1 and NFSCMSG1 must be pre-allocated (see the sample procedure hlq.NFSSAMP(GFSCPROC)). • To initialize the client trace during startup the procedure will need to be updated. In the BPXPRMxx Parmlib member the client entry will need to have PARM('INITD,xxx,yyy,) where xxx,yyy, are your current parameters and the INITD must be in uppercase, for example: PARM('INITD,biod(6)')) INITD must be removed after the startup problem is resolved. Note The Filesystype related parms (see figure 14) cannot be changed dynamically. It can be changed dynamically starting with OS/390 R8. • To initialize the client trace after successful startup: - Start NFS Client address space - Go to ISHELL /usr/lpp/NFS/ directory, and run the program /usr/lpp/NFS/nfsstat with the parameter " -d 1 " ( to turn on debug tracing) - Perform the problem at all - Go to ISHELL /usr/lpp/NFS, and run the program "/usr/lpp/NFS/nfsstat" with the parameter " -d f " (to flush the messages to file) Network File System (NFS) 259 - Go to ISHELL /usr/lpp/NFS, and run the program /usr/lpp/NFS/nfsstat with the parameter " -d 0 " (to turn off debug tracing) Figure 150 shows an example of an NFS client trace: GFSC099I (D) CMAIN.0D #MQctl.1: qnum=0,qbytes=262144 GFSC099I (D) CMAIN.0D #MQctl.4: qlim=1024,qbytes=262144 GFSC099I (D) CMAIN.0E #Start : ErrD GFSC099I (D) CMAIN.0E #Start : MntD GFSC099I (D) CMAIN.0E #Start : BioD GFSC099I (D) CMAIN.0F #Process: Mount GFSC700I OS/390 NETWORK FILE SYSTEM CLIENT (HDZ11TC) STARTED ::::::::::::::::::::::::::::::: 15:11:30 GFSC098I (D) CXDR0 07 VN.REMOV: RQF(003CC3E2:xREMOVE ) RC=5 RQ(-1,45E,0) 15:11:30 GFSC098I (D) CXDR0 07 VN.REMOV: RQF(003CC3E2:xREMOVE ) CLNT_CALL FAILED EZA4339E RPC: Timed out 15:11:30 GFSC098I (D) CXDR0 07 VN.REMOV: RQF(003CC3E2) ERRP=05000000 00000000 15:11:30 GFSC100E (E) CXDR0 12 VN.REMOV: RPC REQUEST (003CC3E2) FAILED, RETURN VALUE -1 RETURN CODE 00000467h REASON CODE 6E020403h 15:11:30 GFSC100E (E) CXDR0 12 VN.REMOV: (TIMED OUT) 15:11:30 GFSC110E (E) CVNRM 2F VN_REMOV: NFS_REMOVE FUNCTION FAILED, RETURN VALUE -1 RETURN CODE 00000467h REASON CODE 6E020403h 15:11:30 GFSC098I (D) $REPL VN_REMOV: RQF(003CC3E2:7F665C30) RV(-1,467h,6E020403h) Figure 150. NFS client trace • Because the NFS client runs under USS, a component trace must be captured in some cases: - Capture the USS component trace. The following example shows how to set up the ctrace and a dump: 1. CTRACE for SYSOMVS: - Update CTIBPX00 member with BUFSIZE(2M) - Enter MVS command: TRACE CT,ON,COMP=SYSOMVS r xx, OPTIONS=(ALL),JOBNAME=(nfsid),END 2. MVS dump after hang occurs: - DUMP COMM=("NFS DUMP"), - r xx,JOBNAME(nfsid,OMVS),DSPNAME=(’OMVS’.*), SDATA=(SQA,CSA,LPA,TRT,RGN),END - See OS/390 UNIX System Services Planning, SC28-1890 - See http://www.s390.ibm.com/oe/samples/oectrace.html • In some cases the TCP/IP CS eNetwork trace must be captured. See 6.1.12.1, “Hints and tips” on page 249 and Appendix A, “Tracing within TCP/IP” on page 289. 260 Debugging UNIX Applications on OS/390 6.2.5.2 How to interpret a USS message In this section we inform you how to interpret a USS message. Example: BPXF002I FILE SYSTEM HOERNER.HFS.TEST WAS 539 NOT MOUNTED. RETURN CODE = 00000081, REASON CODE = 0594003D • BPXF002I FILE SYSTEM name WAS NOT MOUNTED. RETURN CODE = retcode, REASON CODE = reason Explanation: The system could not mount the specified file system. • RETURN CODE 81 Table 39. Return codes listed by value Decimal value Hex value Return code Description 129 0081 ENOENT No such file, directory, or IPC member exists. For more information see, "Return Codes listed by value " in OS/390 UNIX System Services Messages and Codes, SC28-1908. • REASON CODE 0594003D Table 40. The Reason code is made up of 4 bytes in the following format cccc rrrr halfword reason code qualifier halfword reason code The two high-order bytes of the reason codes returned by OS/390 UNIX contain a value that is used to qualify the contents of the two low-order bytes. If the contents of the two high-order bytes are within the range of 0000 to X'20FF', the error represented by the reason code is defined by OS/390 UNIX. If the contents of the two high-order bytes is outside the range, the error represented by the reason code is not an OS/390 UNIX reason code. 6E00–6EFF OS/390 NFS Client File System. See OS/390 Network File System Customization and Operation, SC26-7253, for an explanation of the code. 0594 This value fits in the x'0000'-x'20FF' USS category. 003D JRDirNotFound A directory in the pathname was not found. Action: One of the directories specified was not found. Verify that the name specified is spelled correctly. • REASON CODE 6E22046F 6E22 This value fits in the x’6E00’–x’6EFF’ category. Network File System (NFS) 261 046F Table 41. NFS client Reason codes NFS Version 3 Protocol value OS/390 UNIX value Hex value Description NFS3ERR_REMOT EREMOTE 046F Too many levels of remote in path For more information see "Reason Codes listed by value" in OS/390 UNIX System Services Messages and Codes, SC28-1908, and OS/390 MVS System Messages, Volume 2 (ASB-EZM) , GC28-1785, and Appendix B in OS/390 Network File System Customization and Operation, SC26-7253. For more information about the NFS client messages see Appendix A in OS/390 Network File System Customization and Operation, SC26-7253. 6.2.5.3 Helpful commands See 6.1.12.3, “Helpful commands” on page 250 for the commands to analyze a NFS client problem also. Within the ISHELL the commands could be different. For example, use the command find . -name *rpcinfo to find the directory of the orpcinfo command. 6.2.5.4 Known problems and most frequently asked questions In this section we mention information from known NFS client problems and the solutions. The NFS client does not start (message GFSC700I is missing) • DFSMS NFS MVS Client ABEND0C4 RC 4 at OMVS Startup - Ensure that the PPT entries PGMNAME(BPXINIT,BPXVCLNY) are removed from the SCHEDxx parmlib member. Message BPXF028I NOT MOUNTED RETURN CODE = 0000046A REASON CODE = 6E2204E7 • Ensure that the SYSTCPD DD statement of the NFS client procedure points to the active TCP/IP. The INCLUDES of a PL1 program cannot be accessed and compiled • The problem is that the compiler is not able to compile HFS files. - With DFSMS it should be possible. - INCLUDE books on SYSLIB must exist as a native PDS on the host system. This is because there is apparently no BPAM support for HFS. - Use the command OCOPY to copy the source to the OS/390 system. Message GFSC711E NETWORK FILE SYSTEM CLIENT INITIALIZATION FAILED • GFSC098I (D) CMAIN.0D #MQctl.0: -1,0000006F,07020303 - Ensure that the OMVS segment with GID/UID 0 and the FILESYSTYPE statement in the BPXPRMxx member are defined (see 6.2.1.1, “BPXPRMxx parmlib member” on page 257 and 6.2.2, “RACF profiles” on page 258). 262 Debugging UNIX Applications on OS/390 ABENDEC6 • Do not stop USS or the NFS client with the REXX procedure BPXSTOP. Message GFSC110E during startup • Check your region size and ensure that the SMF exit IEFUSI does not limit your available space. Note For more information see the NFS Internet page as described in Figure 142 through Figure 145 in 6.1.12.5, “Most frequently asked questions” on page 253. 6.3 Documentation In this section we inform you where helpful information about NFS, UNIX System Services (USS), DFSMS, and TCP/IP can be found. Also, a list of related documents is included in Appendix C, “Related publications” on page 297. • On the Internet: - Common OS/390 information http://www.s390.ibm.com • NFS - Books Note See the OS/390 2.6+ documentation because it is updated to include additional common information and the new functions. + NFS books on the Internet: http://www.s390.ibm.com/nfs/pubs.html + NFS home page http://www.s390.ibm.com/nfs/faq/Nfsfaq30.html + NFS APARs: II11447, II09734, II11572, II06805, OW34846, OW38745, OW38862 + NFS Q&A and nondefect on the Internet: http://SSDDOM01.storage.ibm.com/techsup/swtechsup.nsf/support/dfsmste chd • Common forum about the International Support Organization Archives - See MVS-OE@LISTSERV.GEORGETOWN.EDU or on the Internet: http://itsont2.itso.ibm.com • USS - Internet: http://www.s390.ibm.com/oe/samples/oectrace.html Network File System (NFS) 263 • DFSMS/MVS - Internet: http://ssddom01.storage.ibm.com/techsup/swtechsup.nsf http://SSDDOM01.storage.ibm.com/techsup/swtechsup.nsf/support/dfsmstechd ata http://SSDDOM01.storage.ibm.com/techsup/swtechsup.nsf/support/dfsmsmain 264 Debugging UNIX Applications on OS/390 Chapter 7. Infoprint Server In the following sections we provide some hints and tips about the OS/390 Infoprint Server. 7.1 What the Infoprint Server does for you The OS/390 Infoprint Server lets you consolidate your print workload from many servers to a central OS/390 Infoprint Server. Consolidating onto a central print server lets you use the right printer for specific print jobs, balance print workload across all available printers, and more easily manage the inventory of printers. No matter what type of data you want to print (payroll, invoices, Web documents, sales reports), you can use OS/390 batch applications, VTAM applications, applications running on remote workstations, and OS/390 UNIX System Services applications to send print requests to the OS/390 Infoprint Server. The OS/390 Infoprint Server then sends the print requests to OS/390 printers, including local printers and remote printers in a TCP/IP network. (See Figure 151 for the printing solutions the OS/390 Infoprint Server provides.) Printing solutions the OS/390 Infoprint Server provides: Figure 151. OS/390 Infoprint Server capabilities © Copyright IBM Corp. 1999 265 7.2 Printing OS/390 UNIX System Services data on AFP printers A midsize retailer runs UNIX applications that have been ported to OS/390 UNIX System Services. Until now, the applications have printed business statements to ASCII printers controlled by a print server running on a UNIX system. Now, the retailer wants to use a higher-speed AFP printer attached to an S/390, such as the IBM 3130 printer, for more efficient printing. Here is how this retailer can use the OS/390 Infoprint Server components (in gray) to meet its requirements: Figure 152. USS data to AFP printers This works as follows: 1. The UNIX user logs on to OS/390 UNIX System Services using the rlogin function. 2. Using the OS/390 UNIX System Services printing commands provided with the OS/390 Infoprint Server, the UNIX applications print directly to the OS/390 Print Interface component. 3. The OS/390 Print Interface component creates output data sets on the JES spool. 4. PSF/MVS selects the output data sets from the JES spool and prints them on an AFP printer. If the retailer has more than one AFP printer, the first available printer can print the data sets. 7.3 Components of the OS/390 Infoprint Server The OS/390 Infoprint Server provides these components that run on the OS/390 host system: • OS/390 Print Interface • NetSpool • IP PrintWay 7.3.1 OS/390 Print Interface The OS/390 Print Interface provides a line printer daemon (lpd) that extends JES2 and JES3 print capabilities to users and application programs in a TCP/IP LAN environment. It also provides printing support for users and application programs in the OS/390 UNIX System Services environment. Users and applications can print to OS/390-controlled printers, including Advanced Function Presentation (AFP) printers attached to OS/390 using PSF/MVS or LAN-attached ASCII printers attached to OS/390 using IP PrintWay. 266 Debugging UNIX Applications on OS/390 The OS/390 Print Interface provides these benefits: • Prints any type of data format supported by the printer • Validates print requests • Notifies users when processing is complete • Provides a Printer Inventory • Identifies users of printed output • Supports double-byte character set (DBCS) 7.3.2 NetSpool NetSpool directs VTAM application data to the JES spool without requiring application program changes. JES or PSF for OS/390 can print the output data sets or transmit them to another location for printing. Or IP PrintWay can transmit the data sets to a remote printer in your TCP/IP network. NetSpool provides these benefits: • Data integrity • Central routing • Printer sharing • Print broadcasting • AFP formatting • IP PrintWay and NetSpool integration • Double-byte character set (DBCS) support • Transparent-data support For more information about NetSpool, see the NetSpool Web page at: http://www.printers.ibm.com/R5PSC.NSF/Web/index 7.3.3 IP PrintWay IP PrintWay routes JES2 or JES3 print data from OS/390 to remote printers or to host systems in your TCP/IP network. A print server can be running on the host system. The remote printer or host system must support either lpr/lpd protocol or direct socket printing. IP PrintWay provides these benefits: • Data integrity • JCL parameters to route data sets • Automatic routing of data sets • Distribution of data to a workstation • NetSpool and IP PrintWay integration • Accounting • Installation exits • Migration from Network Print Facility (NPF) • Double-byte character set (DBCS) support Infoprint Server 267 7.3.4 UNIX System Services commands The OS/390 Infoprint Server also provides USS commands. OS/390 UNIX System Services commands (lp, lpstat, cancel) let OS/390 UNIX System Services environment applications submit print, query, and cancel requests to the OS/390 Print Interface. OS/390 UNIX System Services commands provide these benefits: • Notifying users when processing is complete • Specifying AFP printing options • Specifying printing options in a file • Printing on remote printers that are not defined to the OS/390 Print Interface 7.3.4.1 Examples Here are a few examples of the USS commands. • Command lp - send a Job to a printer Format: lp [-cmsw] [-d destination] [-n copies] [-o option ...] [-t title] [filename ... | -] Description: The lp command sends a job containing one or more files to a printer. If you do not specify any files on the command line, or if you specify a filename of -, lp prints from standard input. The files can be: - OS/390 data sets, such as partitioned data sets or sequential data sets - Hierarchical File System (HFS) files - Lists of printable files Example: For example, to print three copies of myfile1 and myfile2 on Printer2, enter: lp -d Printer2 -n 3 myfile1 myfile2 • Command lpstat - Show Printer Names and Locations and Status of Print Jobs: Format: lpstat [-dt] [-a [printername ...]] [-o [printername ...]] [-p [printername ...]] [-u[ userid ...]] [jobid ...] Description: lpstat writes the names and locations of printers or the status of print jobs to standard output. For printers, the lpstat command returns - The name of the printer - The number of jobs submitted to the printer using the OS/390 Print Server 268 Debugging UNIX Applications on OS/390 - The location of the printer - A description of the printer For jobs, the lpstat command returns: - The job ID - The user ID of the person who submitted the job - The state of the job like: pending The job is waiting to print. Note: JES3 cannot distinguish job states and returns pending for all jobs on the JES spool. processing The job may be: + Being transmitted to a LAN printer for printing + Printing + Retained on the JES spool after printing held The job is held on the JES spool and cannot print for one of these reasons: + The user specified hold=true when submitting the job. Note: JES3 cannot recognize a job held for this reason and returns pending. + The operator held the job. + An error occurred. - The data format of the job, as specified by the document-format job attribute or as determined by the OS/390 Print Server - The number of bytes in the job - The name of each file or file-reference document in the job When lpstat returns information about multiple jobs, the order is not significant. The first job listed may not be the next job to print. Examples: Use the lpstat command to query printer names and locations. For example, to see the names and locations of all printers known to the OS/390 Print Server, enter: lpstat -a You can also use lpstat to query printer location and job status at the same time. For example, you sent a job to Printer3 and want to pick it up if it has printed instead of waiting to have it delivered to your output bin. To find out where Printer3 is and whether any job that you submitted to it has printed, enter: lpstat -o Printer3 • Command cancel - cancel a print Job Infoprint Server 269 Format: cancel jobid ... Description: The cancel command cancels one or more print jobs that you submitted, with these restrictions: - You can only cancel your own jobs. - You cannot cancel a job after it has started processing. - In a JES3 environment, you may not be able to cancel a job held on the JES spool. Example: Use the cancel command to cancel a job. For example, you realize that you need to make some changes in the file that you just sent to print on Printer3. If you do not remember the job ID that the lp command returned, use the lpstat command to query all the jobs that you submitted to Printer3: lpstat -o Printer3 Suppose that your job has an ID of 17. To cancel it, enter: cancel 17 7.4 Relevant APARs for OS/390 Infoprint Server or Print Interface These are APARs that describe the most common problems with the OS/390 Infoprint Server or Print Interface. For the APARs and PTFs needed for Infoprint Server or Print Interface, refer to site http://www.s390.ibm.com/os390/bkserv/new_tech_info.html. 7.4.1 II11165 APAR Identifier ...... II11165 Last Changed ........ 99/06/14 INFO APAR FOR OS/390 PRINT SERVER OR PRINT INTERFACE COMPID 5647A01OP R100, FMID HOPI100, PSP U:OS390R5 S:PRINTSRV This APAR describes the following problems in the OS/390 Infoprint Server or Print Interface environment: • Section A—SMP/E apply for Infoprint Server yields return code 4 • Section B—MSGAOP027E is issued from the aopstart command • Section C—MSGAOP027E is issued from the cancel or lpstat command • Section D—lp command, expected output not generated • Section E—MSGCEE5207E signal SIGABRT daemon not start • Section F—msgaop004e aopd: bind() failed EDC5111I • Section G—MSGAOP997 cannot open message catalog • Section H—ICH408I /var/printsrv/aopd.515 • Section I—Japanese and Spanish support • Section J—Additional Information on the Security setup for OS/390 Infoprint Interface 270 Debugging UNIX Applications on OS/390 • Section K—Automatically start AOPSTART from the /etc/rc file. Note Refer to the APAR itself to see details about the sections mentioned previously. 7.4.2 II11659 APAR Identifier ...... II11659 Last Changed ........ 99/07/14 INFO APAR FOR OS/390 PRINT SERVER OR PRINT INTERFACE 5647A01OP R100 HOPI100 PSP U:OS390RX S:PRINTSRV II11165 This APAR is the continuation of II11165 (see the previous section) and describes the following problems in the OS/390 Infoprint Server or Print Interface environment: • Section L— Running aopd with another LPD process such as LPSERV • Section M—BPXF024I AOP004E EDC5111I Permission denied message dealing with port 515 • Section N—AOPSTART and AOPSTOP batch information • Section O—Web sites for additional information • Section P—BPXF024I EDC5112I TCP/IP not up and active • Section Q—AOPIM019 Print Interface has not been registered Note Refer to the APAR itself to see details about the sections mentioned previously. Infoprint Server 271 7.4.3 OW39059 APAR Identifier ...... OW39059 Last Changed ........ 99/06/17 PRINT SERVER FAILS WITH MSGBPXF024I ERRNO2 = 0X5620064 Release 100 : UW59599 available 99/05/24 (F905 ) PROBLEM SUMMARY: **************************************************************** * USERS AFFECTED: Customers who use the Open Source version of * * the lpr command called "rlpr". * **************************************************************** * PROBLEM DESCRIPTION: The rlpr program uses several TCP send * * operations to communicate the parts of * * an LPD protocol command. The OS/390 * * Print Interface LPD (aopd) does not * * correctly identify printer name * * because it does not wait for all of * * the parts of the command to be * * received. * * * * The messages issued are: * * BPXF024I (user) open * * (/var/Printsrv/printers/,ORDWR) * * failed in FileHandle::restore() * * const at ./src/filehandle.cpp * * 108: EDC5123I Is a directory. * * errno2=055620064 * **************************************************************** * RECOMMENDATION: Apply the applicable PTF. * **************************************************************** 7.5 Information Sources Here are some helpful information sources, including books and Web sites. 7.5.1 Books These IBM publications provide additional details about the OS/390 Infoprint Server: • IBM IP PrintWay Guide, S544-5379 This book provides information about IP PrintWay, including how: - The MVS system administrator creates and maintains installation data sets and handles failed transmissions - An MVS job submitter submits a job for processing by IP PrintWay - The MVS console operator starts, stops, and monitors IP PrintWay - An MVS diagnostician diagnoses problems • IBM NetSpool Guide, G544-5301 This book provides information about NetSpool, including how: - An MVS system programmer configures NetSpool - The MVS console operator starts, stops, and monitors NetSpool - An MVS diagnostician diagnoses problems 272 Debugging UNIX Applications on OS/390 • Print Interface Configuration Guide, G544-5544 This book provides information about the OS/390 Print Interface, including how: - An OS/390 system programmer installs and configures the OS/390 Print Interface - The OS/390 system administrator creates and maintains an inventory of printers and assists users in submitting print requests - The OS/390 console operator starts, stops, and monitors the OS/390 Print Interface - An OS/390 diagnostician diagnoses problems • OS/390 Infoprint Server Overview, G544-5545 This book provides an overview of the OS/390 Infoprint Server for management and technical personnel and includes the benefits of the OS/390 Infoprint Server, how it can be used, and how it works. • OS/390 Infoprint Server User's Guide for OS/390 UNIX System Services, S544-5543 This book explains how OS/390 UNIX System Services users use the OS/390 Infoprint Server to: - Submit jobs to print on OS/390 - Query printer names and locations or print job status - Cancel print jobs - Specify your requirements for a print job • OS/390 Infoprint Server User's Guide for Windows, S544-5511 This book explains how to install and use the following OS/390 Infoprint Server WindowsTM programs to print documents on OS/390 printers or view AFP files: - AFP Printer Driver - AFP Viewer plug-in - OS/390 Printer Port Monitor 7.5.2 Web sites Here are some interesting Web sites: • The IBM OS/390 Web site provides additional information about OS/390: http://www.s390.ibm.com/os390/ • The DOC APARs and ++HOLD DOC Web page provides information about the latest documentation updates for the OS/390 base elements and optional features: http://www.s390.ibm.com/os390/bkserv/new_tech_info.html • IBM S/390 Printing solutions: http://www.printers.ibm.com/s390.html • The Print Server home page: http://www.printers.ibm.com/R5PSC.NSF/web/printservhome Infoprint Server 273 274 Debugging UNIX Applications on OS/390 Chapter 8. Language Environment for OS/390 IBM OS/390 Language Environment for OS/390 and VM (also called Language Environment) provides common services and language-specific routines in a single run-time environment for C, C++, COBOL, Fortran (OS/390 only; no VM, UNIX System Services, or CICS support), PL/I, and assembler applications. It offers consistent and predictable results for language applications, independent of the language in which they are written. Language Environment is the prerequisite run-time environment for applications generated with the following IBM compiler products: OS/390 C/C++ IBM C for VM/ESA C/C++ Compiler for MVS/ESA AD/Cycle C/370 Compiler COBOL for OS/390 & VM COBOL for MVS & VM SAA AD/Cycle for COBOL/370 PL/I for MVS & VM AD/Cycle PL/I MVS & VM VS FORTRAN and FORTRAN IV (in compatibility mode) Language Environment supports, but is not required for, an interactive debug tool for debugging applications in your native OS/390 environment. The IBM interactive Debug Tool is available with OS/390 or with the latest releases of the C/C++, COBOL, and PL/I compiler products. Language Environment supports, but is not required for, VS Fortran Version 2 compiled code (OS/390 only). Language Environment consists of the common execution library (CEL) and the run-time libraries for C/C++, COBOL, Fortran, and PL/I. For detailed information, refer to OS/390 Language Environment for OS/390 Customization, SC28-1941. 8.1 LE run-time options In this section we describe what the LE run-time options are, how they can be set, and some options of interest. 8.1.1 LE run-time options The LE run-time options essentially control various aspects of LE's management of our application environment. For example, LE run-time options specify how LE performs its storage management, what national language to use for the run-time environment, how LE is to handle abends and exceptions on behalf of an application, and what level of information is to be produced for errors that are not handled. High level languages encapsulate complicated functions into simple functions: • Obtaining storage © Copyright IBM Corp. 1999 275 • Obtaining the system date and time • Output messages • Math functions • etc. The run-time environment is called by the user program to do these pieces of work. LE combines several run-times; binding occurs at run-time, not at link time. 8.1.2 Setting LE run-time options You may wish to set the LE run-time environment for a process that runs from a shell command, from the TSO environment, and from submitted batch jobs. 1. From the shell: You can simply export environment variable _CEE_RUNOPTS to set LE run-time options. For example, if you want to set run-time TRAP to a value of OFF and set run-time option TERMTHDACT to a value of dump, you can enter the following from the shell: export _CEE_RUNOPTS='TRAP(OFF),TERMTHDACT(DUMP)' You could also set the environment variable in your envar file. Just add the same export statement to your envar file. 2. From TSO: You can pass the LE run-time options when you invoke the module name. For example, you can pass the same run-time options mentioned above for example to the dcelogin process by issuing: euvslgn 'TRAP(OFF),TERMTHDACT(DUMP)'/myprincipal 3. From batch: If your program, which is invoked from a batch JCL stream, wants to affect the LE run-time options for that program (process), you can pass these run-time options in the JCL. Here is an example of the descrying prod and how it can pass LE run-time options to kern program/process EUVPCT(where 'Lorgnette' represents an LE run-time option): //GO EXEC PGM=EUVPCT,REGION=someSIZE,TIME=1440, // PARM=('LErtopt1(value),LErtopt2(value)' /&PARMS >DD:CTOUT') 8.1.3 Some LE run-time options of interest • ABPERC: Specifies on abound that is exempt from the LE condition handler, thus percolating the abound code to the operating system, which will create a system dump. • ENVAR: Sets the initial values for the environment variables specified. • LIBSTACK: Controls the allocation of the thread's library stack storage. • POSIX: Specifies whether the enclave can run with the POSIX semantics. • STACk: Controls the allocation and management of thread-level heap storage. • TERmthdact: Sets the level of information produced due to an error that is not handled. • TRACE: Determines whether LE run-time library tracing is active. 276 Debugging UNIX Applications on OS/390 • TRap: Specifies how LE routines handle abends and program interrupts. 8.2 When are which libraries used 1. C/C++ Compile steps > prefix SCEEH... in SYSLIB concatenation 2. Prelink steps > SCEEOBJ and/or SCEECPP in SYSLIB Note: Never SCEELKED or SCEELKEX 3. Link Edit/Binder step > SCEELKED in SYSLIB > SCEELKEX then SCEELKED in SYSLIB (Binder) (LE 1.8 and up only) Note: Never SCEERUN 4. Run/Go step > SCEERUN in STEPLIB/LPA/LINKLST Note: Never SCEELKED 8.3 Common Execution Library (CEL) Language Environment consists of the common execution library (CEL) and the run-time libraries for C/C++, COBOL, Fortran, and PL/I. The prefix of this environment ( modules, messages, etc. ) is CEE. 8.3.1 Set of common functions and routines of LE • Initialization • Storage Management • Condition Handling (error processing) > Includes CEEDUMPs • Messaging • Date/Time services (year 2000) • Termination 8.3.2 Important modules to remember • CEEHDSP: Always the top module in CEEDUMPs. This module schedules the CEEDUMP to be taken, IGNORE CEEHDSP. > LE Condition handling modules start with CEEHxxxx • CEEPLPKA: LE's main load module. Contains most of the parts for CEL. Most LE reported ABENDs occur in CEELPKA. This does not indicate an LE problem. Use the data from U4039 and/or CEEDUMP to determine what the problem is. • CEEBINIT: LE's main initialization load module. > LE Initialization modules will start with CEEBxxxx. Language Environment for OS/390 277 • CEECCICS: LE's main interface module with CICS. > LE CICS interface modules will start with CEECxxxx. • CEEEVxxx: LE event handlers; xxx represents the member number of the language. 003 C/C++Runtime 005 COBOL 007 FORTRAN 008 DCE 010 PL/I 012 Cebug Tool 8.3.3 Messages and abends 8.3.3.1 Prefixes for messages and modules • CEE—represents a CEL environment but may be reporting a problem elsewhere • IGZ—represents a COBOL environment • IBM—represents a PL/I environment • AFH—represents a FORTRAN environment • EDC—represents a C/C++ environment See IBM Language Environment Debugging Guide and Run-Time Messages, SC26-4829, for exact details on LE messages and/or ABENDs. 8.3.3.2 Common CEL messages • CEE3201S—Indicates ABEND0C1 • CEE3204S—Indicates ABEND0C4 • CEE32xxS—Indicates ABEND0Cy Where y is the equivalent for decimal xx • CEE3250C—Indicates some non-0Cx Abend occurred • CEE1000S—CICS only. Report LE ABEND to operator console • CEE0802C and CEE0813S—Error with HEAP storage (normally a user problem) • CEE0374C—Indicates that some error (may or may not be within LE) occurred - examine token. 8.3.3.3 LE condition token (feedback code) Here is an example of a CEE3204S token and how to interpret it: 00030C84 59C3C5C5 xxxxxxxx 0003 | 0C84 | 59 | C3C5C5 | xxxxxxxx 0003 Severity 0000 Informational (I) 0001 Warning (W) 0002 Error (E) 0003 Severe (S) 0004 Critical (C) 278 Debugging UNIX Applications on OS/390 0C84 Hex message number (3204) 59 Flags (ignore) C3C5C5 Prefix (Facility ID) xxxxxxxx Used internally 8.3.3.4 Common CEL abends • U4038—Some severe error occurred but no dump was requested (useless) • U4039—Some severe error occurred and a dump was requested (see CEEDUMP) • U4083*—Save area backchain in error • U4087*—Error during error processing U4083 and U4087 may mask original error • U4093*—Error during initialization • U4094*—Error during termination * You need to obtain the corresponding reason code for a more meaningful error description Note Abend codes mentioned above show decimal value. Reg 15 in SVC Dump shows hex value. 8.3.3.5 Getting useful information 1. A CEEDUMP and/or U4039 Dump Remember U4038 does not generate a dump. 2. Use the following LE run-time options to ask LE to take a dump: TERMTHDACT TRAP 3. U4039 Dump Allocate SYSMDUMP DD card • Must point to a data set (not SYSOUT) • LRECL 4160, RECFM FBS APAR II10573 describes details on how to request a dump in various LE/370 runtime environments. Here is an excerpt of the APAR regarding UNIX System Services: Unix System Services Shell Prior to OS/390 2.7, go to the following URL: http://www.s390.ibm.com/le/assist/support/ii10573.html At OS/390 2.7 or later: 1.Specify where to write the system dump To write the system dump to a data set, issue the command: export _BPXK_MDUMP=filename Language Environment for OS/390 279 where filename is a fully qualified data set name with LRECL=4160 and RECFM=FB 2.Specify Language Environment run-time options: export _CEE_RUNOPTS="termthdact(suboption)" where suboption is UAONLY, UADUMP, UATRACE, or UAIMM. If UAIMM is set, TRAP(ON,NOSPIE) must also be set. 3. Rerun the program and the dump will be written to the specified data set. Different ways to get a CEEDUMP • In batch CEEDUMP DD card - directed to SYSOUT or a data set. If not specified dynamically allocated to SYSOUT=* _CEE_DUMPTARG to SYSOUT=x (LE 2.7) • CICS - CESE Queue - (for more information please see APAR PQ20892) • UNIX System Services - Current working directory _CEE_DUMPTARG to redirect to another directory (LE 1.9) 8.3.3.6 Non-useful information • Remember, when ABTERMENC(ABEND) is set the original ABEND (such as 0C4) is reissued. DO NOT SLIP ON THIS ABEND! • LE reissues this ABEND at the end of LE termination. • The LE environment has already been cleaned up and therefore a dump at this point is useless. • Work with dump of U4039 instead. 8.3.4 Run-time options Changing run-time options: • Installation Defaults—Samples in SCEESAMP CEEWCOPT—CICS only CEEWDOPT—all non-CICS environments • Region Level (LE 2.7 and back to LE 1.8 with PQ22683) CEEWROPT—CICS and IMS (with LRR) only - Unlike Installation defaults, loaded at run-time 280 Debugging UNIX Applications on OS/390 • Application level CEEWUOPT - CEEUOPT must be linked with the application • Program level Compiled into program - #progma runopts() in C - PLIXOPT for PL/I • Program invocation In PARM= statement on EXEC card - COBOL + PARM='program opts/LE runtime opts' - C,PLI, FORTRAN, LE enabled assembler + PARM='LE runtime opts/program opts' + The '/' delimits the two sets of arguments and is required when LE opts are being set • UNIX System Services shell Set the _CEE_RUNOPTS environment variable (use export as needed) - no slash is needed! • Some important run-time options (See LE Customization for a complete list) ABTERMENC(option) RETCODE-Step ends with return code (job continues) ABEND-Step will be ABENDed (job terminates) Recommendations: + CICS - ABTERMENC(ABEND) + OTHERS - ABTERMENC(ABEND) • ALL31() OFF - for environments with AMODE 24 programs - May be determined dynamically (see APARs PQ17931 and PQ20527) ON - for environments with all AMODE 31 programs Recommendations: + CICS - ALL31(ON) whenever possible + OTHERS - ALL31(ON) whenever possible • ERRCOUNT() Terminates environment if number of conditions is exceeded. 0 - Allows infinite number of conditions to occur Required by PL/I for 'on unit' processing—each invocation of an on unit is an LE condition - Required by C/C++ for signal processing—signals are processed as LE conditions Language Environment for OS/390 281 Greater 0—Indicates the number of conditions allowed before LE terminates the process - Recommendations: + CICS—0 (required) + Others—0 • HEAP(int,inc,where,type) - int - Minimum size of initial heap segment inc - Minimum size of any additional heap segments where - BELOW, ANYWHERE type KEEP - do not free when empty (better performance) FREE - free when empty (better memory management) Notes: Used for Cobol working storage Dynamic storage (C malloc/PLI allocate) Recommendations: - CICS - HEAP(4K,4080.ANYWHERE,KEEP,4K,4080) OTHER - HEAP(32K,32K,ANYWHERE,KEEP.8K,4K) When BELOW uses FREE When ANYWHERE uses KEEP • STACK(int,inc,where,type) - int—Size of initial stack segment inc—Minimum size of any additional stack segments where—BELOW,ANYWHERE - Must be BELOW if ALL31(OFF) type KEEP - do not free when empty (better performance) FREE - free when empty (better memory management) Notes: Used for Dynamic Save Area Used for C/C++ and PL/I local variables Recommendations: - CICS - STACK(4K,4080,ANYWHERE,FREE) - OTHER - STACK(128K,128K,ANYWHERE,KEEP) Use KEEP when ANYWHERE is specified Use FREE when BELOW is specified • POSIX(option) - ON - Indicates POSIX semantics should be used - OFF - Indicates ANSI semantics should be used Notes: Where ANSI and POSIX conflict this setting is used to clear up any ambiguities. 282 Debugging UNIX Applications on OS/390 ANSI programs may access the UNIX System Services HFS without POSIX(ON) POSIX(ON) must be set to use POSIX only functions like thread_create() POSIX(ON) is the default in the USS Shell Recommendations: - CICS - POSIX(OFF) - OTHER - POSIX(OFF) • STORAGE(getheap,freeheap,stack,reserve allocation) - getheap—One byte value used to initialize every heap allocation; 00 is equivalent to WSCLEAR (COBOL). - freeheap—One byte value used to initialize every heap free. + Debug purposes + Security purposes - stack—One byte value used to initialize every stack (DSA) allocation. - reserve allocation—Reserve stack storage (does not really belong on this option) Recommendations: - CICS—STORAGE(00,NONE,00,0K) - OTHER—STORAGE(NONE,NONE,NONE,8K) • TERMTHDACT (option)—The action a thread task takes when terminating - QUIET—Messages off MESSAGE—Just message no dump TRACE—Traceback only (no dump) DUMP—CEEDUMP only UADUMP—CEEDUMP/system dump* UAONLY—system dump no CEEDUMP (LE 2.7) UATRACE—system dump and traceback (LE 2.7) UAIMM—system dump of the original error (LE 2.7) + Requires TRAP(ON,NOSPIE) + Takes dump in LE ESTAE using SETRP prior to LE condition for Program checks only. Recommendations: - CICS—TERMTHDACT(MSG) - OTHER—TERMTHDACT(TRACE) • TRAP Used to turn LE condition handling on or off. - TRAP(ON,SPIE) recommended. Simply TRAP(ON) prior to LE 1.9 - TRAP(ON,NOSPIE) (LE 1.8) Allows user applications to have their own ESPIE routine. LE condition handling will still take place using an ESTAE. Required if using TERMTHDACT(UAIMM) (LE 2.7) - TRAP(OFF) Language Environment for OS/390 283 • LE condition handling is disabled (almost) • SPIE/NOSPIE suboption is ignored Recommendations: - CICS - TRAP(ON,SPIE) - OTHER - TRAP(ON,SPIE) 8.4 LE hands on debug As already mentioned, to debug an LE problem you can set the run-time options to get either a CEEDUMP or to force an SVCDUMP. To debug a real application program problem the CEEDUMP will provide useful information to fix the problem. If a system ABEND occurs, request an SVCDUMP 8.4.1 CEEDUMP debugging The following CEEDUMP provides information for: • Domino server ABENDs with U034 RC 070E0303 8.4.1.1 Traceback The traceback section includes a sequential list for all active routines and the routine name, statement number, and offset where the exception occurred. I Figure 153. Partial traceback information The traceback shows the last accessed module at the top of the trace output. In this trace the exception status is shown for module Panic. This module will always show an exception status whenever a problem occurs. Because we have a security problem and not a coding problem we only find the exception status in the Panic module. If a coding problem hits we will first find the exception status (examine the trace starting from bottom to top) in this module followed by the Panic module. 284 Debugging UNIX Applications on OS/390 The following condition information section displays a message describing the condition and the address of the condition information block (CIB) which has pointers to other useful control blocks and areas: Condition Information for Active Routines Condition Information for ./ospanic.c (DSA address 1E5E6A60) CIB Address: 0002E618 Current Condition: CEE0198S The termination of a thread was signaled due to an unhandled condition. Original Condition: CEE3250C The system or user ABEND U 034 R=070E0303 was issued. Location: Program Unit: ./ospanic.c Program Unit:Entry: Panic Statement: Offset: +00041C4E Machine State: ILC..... 0002 Interruption Code..... 000D PSW..... 078D1400 9ADE2696 GPR0..... 84000000 GPR1..... 84000022 GPR2..... 0000006F GPR3.....070E0303 GPR4..... 1E5E6DA8 GPR5..... 1C75EBD8 GPR6..... 1C6CDF10 GPR7..... 1C75EBD8 GPR8..... 1D8DCB20 GPR9..... 0000000A GPR10.... 000FE3B8 GPR11.... 1F940C58 GPR12....1E5DA5A8 GPR13....1E5E6A60 GPR14.... 9ADA1068 GPR15.... 070E0303 ABEND code: 00000022 Reason code: 070E0303 It is important to know how to find information about the reason code, which in this case can be found in OS/390 UNIX System Services Messages and Codes, SC28-1908, in the chapter "Reason Codes Listed by Value." The reason code is made up of 4 bytes in the following format: Table 42. Reason codes cccc rrrr 070E 0303 • cccc is a halfword reason code qualifier • rrrr is the halfword reason code In the previous mentioned Message and Codes manual you can find that 070E points to a security problem. To get more information we have to look for the rrrr 0303 value. This leads to: JRlpcDENIED Access was denied because the caller does not have the correct permission. Even though it would be better to debug this problem using an SVC Dump, let us still have a look at the CEEDUMP to become more familiar. To get information where the problem occurred we have to look for a control block which is called ZMCH. This control block is pointed to by our Condition Information Block (CIB). The storage address where we can find our CIB is provided in the Condition Information for Active Routines section (mentioned above). Now we have to look for this storage area to find the CIB eye catcher. On hex offset '24' in this control block you will find the storage address for our ZMCH. ZMCH control block starts with his eye catcher and shows on hex offset '8' the General Purpose Registers (GPRs) followed by the Program Status Word (PSW) which leads us to the failing module. Language Environment for OS/390 285 If it is difficult to find the ZMCH like described issue only a 'find ZMCH' command. Another possibility to find CIB and ZMCH is to start with register 12 value at the time of the error. Register 12 will point to a control block called CAA (Anchor Vector). On offset 2D8 you will get the address to find the CIB. To verify whether register 12 points to a CAA check the eye catcher which should be seen on the register 12 address minus hex 10. If you would like to go deeper into CEEDUMP debugging refer to IBM Language Environment for MVS and VM Debugging Guide and Run-Time Messages, SC26-4829. 8.4.1.2 System Dump debugging Now let us have a look at the System Dump. For this special problem we had to set two SLIP Traps. The first one was set to catch the U034 ABEND and another one was set to get a dump at the time where RACF returned the bad reason code which ends with a security violation. SLIP SET,C=U0034,ID=U034,SDATA=(ALLNUC,PSA,CSA,LPA,SQA,RGN, SUM,TRT,GRSQ),AL=(0),JL=(OMVS),DSPNAME=('OMVS'.SYSZBPX1, 'OMVS'.SYSZBPX2),END For more information on how to set this slip refer to 2.1.5 Dump options / IPCS in OS/390 MVS System Commands, GC28-1781. Note If the problem seems to be UNIX System Services related provide a dump including the OMVS address space and all its data spaces. Interactive Problem Control System (IPCS) is the tool to debug System Dumps. For detailed information please refer to OS/390 MVS Interactive Problem Control System (IPCS) Commands, GC28-1754. The following command will provide you a quick opportunity to look for a search argument which can be used to ask the support center for an already known solution or to search in different databases provided by IBM. Table 43. Common IPCS commands 286 IPCS command Output IP ST Status during initial part of problem determination process IP CBF RTCT+9C? STR(SDUMP) VIEW FLAGS Shows specified dump options IP SELECT ALL Shows all active address spaces at time of dump IP ST CPU REGI Shows registers at time of the slip matched IP SYSTRACE TIME(GMT or LOCAL) Shows system trace including time values VERBX LOGDATA Shows EREP and ABEND information IP VERBX MTRACE Provides part of the SYSLOG Debugging UNIX Applications on OS/390 To get LE-related information you can use the following commands: Table 44. LE-related IPCS commands IPCS command Output IP VERBX LEDATA General LE data IP VERBX CEEERRIP ’CEEDUMP’ CEEDUMP information IP VERBX CEEERRIP ’CM’ LE control block information IP VERBX CEEERRIP ’HEAP’ All storage management control blocks IP VERBX CEEERRIP ’ALL’ All control block including CTRL and COBOL IP VERBX CEEERRIP ’CAA(xxxxxxxx)’ Combined with other options - allows specific CAA to be used as anchor (required for CICS) - VERBX CEEERRIP ’ALL CAA(xxxxxxxx) IP VERBX CEEERRIP 'DSA(xxxxxxxx)' Combined with other options - allows specific DAS (Dynamic Save Area) to be used for trace back IP VERBX CEEEDDI 'TCB(xxxxxxxx)' Combined with other options - allows specific TCB to be used as starting point Getting the name of the failing csect (LE module/function/): From option1 (Browse) in IPCS: 1. Get address (second word) from PSW. 2. Issue L xxxxxxxx (where xxxxxxxx is the address you got from PSW). 3. Issue F CEE prev. 4. Back up 5 bytes to the 47F0xxxx instruction. • This is the beginning of the CSECT function. • Repeat steps 3 and 4 as needed (to step further back for more module checking). 5. Add the value at offset x'0C' to the module address. 6. Go to the location. • You can do this by issuing the L value you calculated. 7. First byte is offset (or half offset) to name. 8. This is a 2-byte prefixed string with the function name. Language Environment for OS/390 287 0B14D100 0B14D110 0B14D120 0B14D130 0B14D140 0B14D150 0B14D160 0B14D170 0B14D180 0B14D190 0B14D1A0 0B14D1B0 0B14D1C0 0B14D1D0 0B14D1E0 0B14D1F0 0B14D200 0B14D210 0B14D220 47F0F014 00C3C5C5 00000098 000000D8 ! .00..CEE...q...Q Start address B14d100 + offset value 47F0F001 90ECD00C 18BF41F0 00005800 ! .00...ü....0.... B1345810 D04C1E01 5500C00C 47D0B038 ! ....ü<....ä..ü.. 58F0C2BC 05EF181F 5000104C D7011000 ! .0B.....&..<P... 100018FD 18D150F0 D00450D0 F00898F1 ! .....J&0ü.&ü0.q1 F010D203 D0801000 5850D080 58A05000 ! 0.K.ü....&ü...&. 1F44BF2F A39C4780 B0745830 20081223 ! ....t........... 4770B06A 58D0D004 18F458E0 D00C980C ! .....üü..4.Öü.q. D01407FE D7C1E3C3 C840C1D9 C5C14060 ! ü...PATCH AREA 40C3C5C5 D6E7D2C5 C440F9F8 4BF0F6F8 ! CEEOXKED 98.068 B0A0B0A2 B0A4B0A6 B0A8B0AA B0ACB0AE ! ...s.u.w.y...... B0B0B0B2 B0B4B0B6 B0B8B0BA B0BCB0BE ! ................ B0C0B0C2 B0C4B0C6 B0C8B0CA B0CCB0CE ! .ä.B.D.F.H...... B0D00000 00000000 20CEB000 0B14D204 ! .ü............K. go 20 bytes ahead TO 0B14D1EF (X'00000010' bytes)--All bytes contain X'00' 00000000 00200000 0008C3C5 C5D6E7D2 ! ..........CEEOXK C5C40000 01000001 00000000 00000000 ! ED.............. 00000014 0B14D100 F1F9F9F8 F0F3F0F9 ! ......J.19980309 F1F2F1F2 F0F0F0F1 F0F9F0F0 0001F000 ! 121200010900..0. Figure 154. Example dump output Remember step 7 above (offset or half offset). For more information about debugging refer to the previous mentioned publications. 288 Debugging UNIX Applications on OS/390 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Appendix A. Tracing within TCP/IP This appendix describes how to use and set up the TCP/IP component trace and the TCP/IP packet trace. A.1 The Component Trace The most important facility to debug problems in OS/390 eNetwork Communications Server is the Component Trace. It can be used to investigate the cause of problems in the TCP/IP area by tracing internal processes and data flows. The MVS Component Trace support provides the following functions: • Captures trace requests. • Adds trace records to an internal buffer. • If you request, it will also write this internal buffer to an external writer. • You can use the IPCS subcommand CTRACE to format the trace records. • Each data area in the trace record is dumped separately. A descriptor at the beginning records the address and length of each data area, so you can determine from where it came. The Component Trace traces individual components (such as STORAGE, Internet, PFS, and so on) and writes the information to individual data sets. You will typically use Component Trace while recreating a problem. A.1.1 Using the Component Trace with internal buffer The TCP/IP Component Trace options can be specified at TCP/IP initialization, in the SYS1.PARMLIB member CTIEZBxx, or after TCP/IP was initialized. A default minimal component trace is always started during TCP/IP initialization. If you want to start TCP/IP with a specific trace member you must use the command: /S tcpip_procedure_name,PARMS=CTRACE(CTIEZBxx) The CTIEZBxx member contains a BUFSIZE parameter. The default for this parameter is 256 K, but you should use a BUFSIZE of 16M to ensure that traces written to the internal buffer do not wrap. Please note that you need to restart TCP/IP to change the BUFSIZE parameter. For more information about the CTRACE options refer to OS/390 eNetwork Communications Server IP Diagnosis Guide, SC31-8521. If you want to change the Component Trace options after TCP/IP initialization, you must use the MVS TRACE CT command. All options except for the size of the TCP/IP Component Trace buffer can be changed using this command. To specify the trace options you can either use the previously mentioned CTIEZBxx parmlib member, or you can enter the trace options as prompt reply. © Copyright IBM Corp. 1999 289 • To use the trace options specified in the parmlib member, you must start the Component Trace with the command: TRACE CT,ON,COMP=SYSTCPIP,SUB=(tcpip_procedure_name), PARM=CTIEZBxx • If you want to enter the trace options at the prompt, you must start the CTRACE with the command: TRACE,CT,ON,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) You will be prompted to specify the trace options to be in effect and you must respond using the following syntax: R xx,OPTIONS=(option1,option2,option3,etc.),END The OPTIONS parameter list contains the trace options that are used for the Component Trace to trace specific TCP/IP components, such as TCP, UDP, ENGINE or SOCKETS. A complete list of all CTRACE options is available in OS/390 eNetwork Communications Server IP Diagnosis Guide, SC31-8521. After starting the Component Trace, you should verify that the CTRACE options are in effect by issuing: DISPLAY TRACE,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) Watch out that CTRACE buffer size is displayed as set in your CTIEZBxx member. CTRACE buffer size not being at the configured size indicates a possible syntax error in the CTIEZBxx member. MVS System log may contain messages pointing to the syntax error. If you are sure that the CTRACE is running with all the options you have specified, then recreate the event you want to trace and obtain the CTRACE data with a dump: • DUMP COMM=(your dump title here) • R n,JOBNAME=tcpipprocname,DSPNAME=’TCPIPPROCNAME’.TCPIPDS1, CONT • R n,SDATA=(nuc,rgn,csa,sqa),END TCPIPDS1 is the name of the data space for each TCP/IP in an MVS image. For the dump to be meaningful, CSA and SQA must be specified (minimally) for the SDATA parameter. The input can be either a dump of the TCP/IP address space and the data space, TCPIPDS1, containing the trace table or the data set(s) produced by the external writer (see next chapter). 290 Debugging UNIX Applications on OS/390 • To deactivate the CTRACE use the command: TRACE CT,ON,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) and reply R xx,OPTIONS=(MINIMUM),end This way your CTRACE buffer size will stay as configured, but all options are reset. • Using the command: TRACE CT,OFF,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) will reset the CTRACE buffer size to 128k and you will need to restart TCPIP to get it back to 16M. A.1.2 Using the Component Trace with external writer If you do not want the CTRACE writing to the internal buffer, you can define an external writer data set. This data set is defined in the CTTCP procedure in SYS1.PROCLIB. • To use the CTRACE with external writer you need to start the writer with the command: TRACE CT,WTRSTART=CTTCP • Then turn on the trace and connect the external writer. The following command connects TCP to the external writer. TRACE CT,ON,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) - Once the system responds, issue: R nnnn,OPTIONS=(....), WTR=CTTCP,END • Verify that all the CTRACE options are in effect by issuing: DISPLAY TRACE,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) • Then recreate the event you want to trace and disconnect the external writer immediately: TRACE CT,ON,COMP=SYSTCPIP,SUB=(tcpip_procedure_name) • Once the system responds, reply: R nn, OPTIONS=(MINIMUM), WTR=DISCONNECT,END The CTRACE is set to minimum mode after this command. • Then you can stop the external writer with the command: TRACE CT,WTRSTOP=CTTCP To view the trace data you must use the IPCS Component Trace formatting. Specify the external writer data set as the default in IPCS and use the CTRACE formatting with COMP=SYSTCPIP and SUB=tcpip_procedure_name. Tracing within TCP/IP 291 A.2 The Packet Trace The TCP/IP Packet Trace contains all outgoing and incoming packets for a specified packet option, broken down into headers and data. It is very useful to investigate problems with FTP or other applications that transfer data using TCP or UDP. • To start the Packet Trace with the packet option that should be monitored, use the following command: VARY TCPIP,tcpip_procedure_name,PKT,ON,packet_option - The packet option can be one of the following: • Packet Length (ABBREV=abbrev_length) • Protocol Type (PROT=TCP,UDP,ICMP) • Packet Destination Address (IP=xxx.xxx.xxx.xxx) • Packet Source Port (SRCPORT=source_port) • Packet Destination Port (DESTPORT=destination_port) • If you want the Packet Trace written to an external data set, you must activate the external writer with the command: TRACE CT,WTRSTART=PTTCP,WRAP • The Status of the Trace should be verified with the command: DISPLAY TRACE,COMP=SYSTCPDA,SUB=(tcpip_procedure_name) • Then connect the Packet Trace to the external writer: TRACE CT,ON,COMP=SYSTCPDA,SUB=(tcpip_procedure_name) and reply to the prompt with: R nnnn,WTR=PTTCP,END • Then recreate the problem situation you want to trace • Disconnect the external writer immediately using the command: TRACE CT,ON,COMP=SYSTCPDA,SUB=(tcpip_procedure_name) reply to the prompt with: R nnnn,WTR=DISCONNECT,END • Stop the external writer with the command: TRACE CT,WTRSTOP=PTTCP • And finally stop the packet trace VARY TCPIP,tcpip_procedure_name,PKT,OFF To view the trace data you must use the IPCS Component Trace formatting. Specify the external writer data set as the default in IPCS and use the CTRACE formatting with COMP=SYSTCPDA and SUB=tcpip_procedure_name. 292 Debugging UNIX Applications on OS/390 Appendix B. Special notices This publication is intended to help systems programmers and IBM customer support personnel to solve problems related to applications executing under UNIX System Services. The information in this publication is not intended as the specification of any programming interfaces that are provided by OS/390 and UNIX System Services. See the PUBLICATIONS section of the IBM Programming Announcement for OS/390 for more information about what publications are considered to be product documentation. References in this publication to IBM products, programs or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only IBM's product, program, or service may be used. Any functionally equivalent program that does not infringe any of IBM's intellectual property rights may be used instead of the IBM product, program or service. Information in this book was developed in conjunction with use of the equipment specified, and is limited in application to those specific hardware and software products and levels. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785. Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact IBM Corporation, Dept. 600A, Mail Drop 1329, Somers, NY 10589 USA. Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee. The information contained in this document has not been submitted to any formal IBM test and is distributed AS IS. The information about non-IBM ("vendor") products in this manual has been supplied by the vendor and IBM assumes no responsibility for its accuracy or completeness. The use of this information or the implementation of any of these techniques is a customer responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. While each item may have been reviewed by IBM for accuracy in a specific situation, there is no guarantee that the same or similar results will be obtained elsewhere. Customers attempting to adapt these techniques to their own environments do so at their own risk. Any pointers in this publication to external Web sites are provided for convenience only and do not in any manner serve as an endorsement of these Web sites. Any performance data contained in this document was determined in a controlled environment, and therefore, the results that may be obtained in other operating environments may vary significantly. Users of this document should verify the applicable data for their specific environment. © Copyright IBM Corp. 1999 293 This document contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples contain the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. Reference to PTF numbers that have not been released through the normal distribution process does not imply general availability. The purpose of including these reference numbers is to alert IBM customers to specific information relative to the implementation of the PTF when it becomes available to each customer according to the normal IBM PTF distribution process. The following terms are trademarks of the International Business Machines Corporation in the United States and/or other countries: IBM AD/Cycle AFP AIX AS/400 AT BookManager C/MVS CICS COBOL/370 C/370 CT DB2 DFSMS DFSMS/MVS DFSMSdfp eNetwork Hummingbird IMS IMS/ESA Infoprint IPDS IP PrintWay Langauge Environment MQ MQ MQSeries MVS/ESA Net.Data Netfinity NetSpool OpenEdition OS/2 OS/390 PrintWay RACF RMF RS/6000 S/390 SP SP1 System/390 TeamConnection VisualAge VM/ESA VTAM WebSphere XT 400 The following terms are trademarks of other companies: C-bus is a trademark of Corollary, Inc. in the United States and/or other countries. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and/or other countries. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States and/or other countries. PC Direct is a trademark of Ziff Communications Company in the United States and/or other countries and is used by IBM Corporation under license. ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel Corporation in the United States and/or other countries. 294 Debugging UNIX Applications on OS/390 UNIX is a registered trademark in the United States and/or other countries licensed exclusively through X/Open Company Limited. SET and the SET logo are trademarks owned by SET Secure Electronic Transaction LLC. Other company, product, and service names may be trademarks or service marks of others. Special notices 295 296 Debugging UNIX Applications on OS/390 Appendix C. Related publications The publications listed in this section are considered particularly suitable for a more detailed discussion of the topics covered in this redbook. C.1 International Technical Support Organization publications For information on ordering these ITSO publications see “How to get ITSO Redbooks” on page 301. • OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178 • File Server Consolidation on S/390, SG24-5330 • Global Server Certificate Usage with OS/390 Webserver, SG24-5623 • OS/390 Version 2 Release 4 Performance for CICS Web-Enabled Applications, SG24-5612 • IMS e-business Connect Using the IMS Conenctors, SG24-5427 • Developing an e-business Application for the IBM WebSphere Application Server, SG24-5423 • e-business Application Solutions on OS/390 USing Java: Samples, SG24-5365 • e-business Application Solutions on OS/390 Using Java: Volume 1, SG24-5342 • OS/390 Workload Manager Implementation and Exploitation, SG24-5326 • Accessing DB2 for OS/390 Data from the World Wide Web, SG24-5273 • CICS Transaction Server for OS/390: Web Interface and 3270 Bridge, SG24-5243 • Internet Security in the Network Computing Framework, SG24-5220 • Ready for e-business: OS/390 Security Server Enhancements, SG24-5158 • Net.Commerce for OS/390, SG24-5154 • IP Network Design Guide, SG24-2580 • Connecting Domino to the Enterprise Using Java, SG24-5425 • OS/390 eNetwork Communications Server V2R7 TCP/IP Implementation Guide Volume 1: Configuration and Routing, SG24-5227 • OS/390 eNetwork Communications Server V2R7 TCP/IP Implementation Guide Volume 2: UNIX Applications, SG24-5228 • OS/390 eNetwork Communications Server V2R7 TCP/IP Implementation Guide Volume 3: MVS Applications, SG24-5229 © Copyright IBM Corp. 1999 297 C.2 Redbooks on CD-ROMs Redbooks are also available on the following CD-ROMs. Click the CD-ROMs button at http://www.redbooks.ibm.com/ for information about all the CD-ROMs offered, updates and formats. CD-ROM Title System/390 Redbooks Collection Networking and Systems Management Redbooks Collection Transaction Processing and Data Management Redbooks Collection Lotus Redbooks Collection Tivoli Redbooks Collection AS/400 Redbooks Collection Netfinity Hardware and Software Redbooks Collection RS/6000 Redbooks Collection (BkMgr Format) RS/6000 Redbooks Collection (PDF Format) Application Development Redbooks Collection IBM Enterprise Storage and System Management Solutions Collection Kit Number SK2T-2177 SK2T-6022 SK2T-8038 SK2T-8039 SK2T-8044 SK2T-2849 SK2T-8046 SK2T-8040 SK2T-8043 SK2T-8037 SK3T-3694 C.3 Other publications These publications are also relevant as further information sources: • OS/390 MVS Installation Exits, SC28-1753 • OS/390 MVS System Commands, GC28-1781 • OS/390 MVS Diagnosis: Tools and Service Aids, SY28-1085 • OS/390 MVS Interactive Problem Control SYstem (IPCS) Commands, GC28-1754 • OS/390 MVS Initialization and Tuning Guide, SC28-1751 • OS/390 MVS System Messages, Volume 2 Part 1 (ASB–CBR), GC28-1785 • OS/390 SMP/E Reference, SC28-1806 • Understanding Distributed Computing Environment Concepts, GC09-1478 • OS/390 DCE Introduction, GC28-1581 • OS/390 DCE Planning, SC28-1582 • OS/390 DCE Configuring and Getting Started, SC28-1583 • OS/390 DCE Command Reference, SC28-1585 • OS/390 DCE Administration Guide, SC28-1584 • OS/390 DCE Messages and Codes, SC28-1591 • OS/390 DCE Application Development Guide: Core Components, SC28-1588 • OS/390 DCE Application Development Guide: Directory Services, SC28-1589 • OS/390 DCE Application Development Reference Volumes 1 and 2, SC28-1590 • OS/390 C/C++ Run-Time Library Reference, SC28-1663 • OS/390 Language Environment for OS/390 and VM Run-Time Migration Guide, SC28-1944 • OS/390 OpenEdition DCE User’s Guide, SC28-1586 298 Debugging UNIX Applications on OS/390 • OS/390 Language Environment for OS/390 Customization, SC28-1941 • OS/390 Language Environment for OS/390 & VM Programming Guide, SC28-1939 • OS/390 Language Environment for OS/390 & VM Programming Reference, SC28-1940 • OS/390 Language Environment for OS/390 & VM Debugging Guide and Run-Time Messages, SC28-1942 • IBM Language Environment for MVS & VM Debugging Guide and Run-Time Messages, SC26-4829 • OS/390 OpenEdition DCE Security Server Overview, GC28-1938 • Interactive System Productivity Facility (ISPF) Planning and Customizing, SC28-1298 • MVS Diagnosis: Reference, LY28-1084 (available to IBM license customers only) • OS/390 UNIX System Services Messages and Codes, SC28-1908 • OS/390 UNIX System Services User's Guide, SC28-1891 • OS/390 UNIX System Services Planning, SC28-1890 • OS/390 UNIX System Services Command Reference, SC28-1892 • OS/390 Version 2 Release 6 UNIX System Services Implementation and Customization, SG24-5178 • OS/390 V2R6 Print Server User’s Guide for OS/390 UNIX System Services, S544-5543 • IBM IP PrintWay Guide, S544-5379 • IBM NetSpool Guide, G544-5301 • OS/390 Print Interface Configuration Guide, G544-5544 • OS/390 Print Server Overview, G544-5545 • OS/390 Print Server User’s Guide for Windows, S544-5511 • OS/390 Distributed File Service Configuring and Getting Started, SC28-1722 • OS/390 Distributed File Service Administration Guide and Reference, SC28-1720 • OS/390 Distributed File Service Messages and Codes, SC28-1724 • OS/390 Network File System Performance Tuning Guide, SC26-7255 • OS/390 NFS Customization and Operation, SC26-7253 • OS/390 Network File System User's Guide, SC26-7254 • IBM TCP/IP for MVS Customization and Administration Guide, SC31-7134 • OS/390 Open Systems Adapter/Support Facility User’s Guide for OSA-1 and OSA-2, SC28-1855 • Planning for the OS/390 Open Systems Adapter (OSA-1, OSA-2) Feature, GC23-3870 • DFSMS/MVS Version 1 Release 5 Planning for Installation, SC26-4919 • DFSMS/MVS Version 1 Release 5 Using Data Sets, SC26-4922 Related publications 299 • DFSMS/MVS Version 1 Release 5 General Information, GC26-4900 • DFSMS/MVS Version 1 Release 5 DFSMSdfp Advanced Services, SC26-4921 • DFSMS/MVS Version 1 Release 5 Implementing System-Managed Storage, SC26-3123 • DFSMS/MVS Version 1 Release 5 Access Method Services for the Integrated Coupling Facility, SC26-4906 • OS/390 SecureWay Comuunications Server IP Configuration, SC31-8513 • OS/390 SecureWay Communications Server IP User's Guide, GC31-8514 • OS/390 SecureWay Communications Server IP Programmer's Reference, SC31-8515 • OS/390 SecureWay Communications Server IP Diagnosis Guide, SC31-8521 • OS/390 SecureWay Communications Server SNA Operation, SC31-8567 • OS/390 Security Server (RACF) Security Administrator’s Guide, SC28-1915 • OS/390 Security Server (RACF) Command Language Reference, SC28-1919 • Lotus Domino for S/390 R4.6 Installation, Customization and Administration, SG24-2083 • Domino Go Webserver Webmaster’s Guide, SC31-8691 • Domino Go Webserver Messages, SC31-8692 • Novell Network Services for OS/390 Installation, GA22-7312 • Novell Network Services for OS/390 Supervising the Network, SA22-7317 • Novell Network Services for OS/390 Utilities Reference, SA22-7318 • Novell Network Services for OS/390 Introduction to Novell Directory Services, SA22-7314 • Novell Network Services for OS/390 Concepts, SA22-7313 • Novell Network Services for OS/390 Messages, SA22-7316 • Novell Network Services for OS/390 Schema, SA22-7342 300 Debugging UNIX Applications on OS/390 How to get ITSO Redbooks This section explains how both customers and IBM employees can find out about ITSO redbooks, redpieces, and CD-ROMs. A form for ordering books and CD-ROMs by fax or e-mail is also provided. • Redbooks Web Site http://www.redbooks.ibm.com/ Search for, view, download, or order hardcopy/CD-ROM redbooks from the redbooks Web site. Also read redpieces and download additional materials (code samples or diskette/CD-ROM images) from this redbooks site. Redpieces are redbooks in progress; not all redbooks become redpieces and sometimes just a few chapters will be published this way. The intent is to get the information out much quicker than the formal publishing process allows. • E-mail Orders Send orders by e-mail including information from the redbooks fax order form to: In United States Outside North America e-mail address usib6fpl@ibmmail.com Contact information is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl/ • Telephone Orders United States (toll free) Canada (toll free) Outside North America 1-800-879-2755 1-800-IBM-4YOU Country coordinator phone number is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl/ • Fax Orders United States (toll free) Canada Outside North America 1-800-445-9269 1-403-267-4455 Fax phone number is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl/ This information was current at the time of publication, but is continually subject to change. The latest information may be found at the redbooks Web site. IBM intranet for employees IBM employees may register for information on workshops, residencies, and redbooks by accessing the IBM Intranet Web site at http://w3.itso.ibm.com/ and clicking the ITSO Mailing List button. Look in the Materials repository for workshops, presentations, papers, and Web pages developed and written by the ITSO technical professionals; click the Additional Materials button. Employees may access MyNews at http://w3.ibm.com/ for redbook, residency, and workshop announcements. © Copyright IBM Corp. 1999 301 IBM Redbook fax order form Please send me the following: Title Order Number First name Last name Company Address City Postal code Country Telephone number Telefax number VAT number Card issued to Signature Invoice to customer number Credit card number Credit card expiration date We accept American Express, Diners, Eurocard, Master Card, and Visa. Payment by credit card not available in all countries. Signature mandatory for credit card payment. 302 Debugging UNIX Applications on OS/390 Quantity Index E A env command environmental ETC 241 Access log 59 Agent log 59, 109 APF 252 F B BPAM 262 BPXPRMxx 186 , 200, 248 BPXPRMxx parmlib member BPXSTOP 263 52 248 FDDI 239, 240 FILESYSTYPE 130, 245, 262 Filesystype 259 Fixup 81 FORKCOPY 248 130 C G Cache Accelerator 227 Calendaring and Scheduling 111 cconsole program 61 CEEDUMP debugging 284 Cgi-error log 60 compact databases 77 compacting 75 Copy-style compacting 76 ctrace 260 GFSAUXF 245 H HFS 239, 244 http 249 HTTP task 86 HummingBird 249 I IEFUSI 252, 263 Infoprint Server 265 In-place compacting 76 IP PrintWay 267 IPX protocol 129 D DCE Audit Services 199 DCE cell 190 DCE components 196 DCE daemons 192, 193 DCE debug tracing 193 DCE Directory Service 197 DCE Distributed Time Service 197 DCE function trace 194 DCE Remote Procedure Call 198 DCE Security Service 196 DCEKERN address space 192 debug router problems 106 DEBUG9 249 debug9 trace 250 define DCEKERN to RACF 187 df command 52 DFS 199 DFS daemons 205, 206 DFS installation 200 DFS security 207 DFSMS 247, 249 Distributed Computing Environment (DCE) Distributed File Service (DFS) 199 DOMCON 35 Domcon 34 Domino console 61 Domino Directory 66 Domino Go Webserver 211 DOMLOG 59 dsrepair 181 © Copyright IBM Corp. 1999 L Language Environment 275 LE run-time options 275 logs for the WebSphere Application Server Lotus Domino for S/390 33 215 M Maximum 248 multivolume 247 MVSNFS procedure 258 N 185 NDS 125 NetSpool 267 NetWare Directory Services (NDS) NFS procedure 242 NFS server 249 NLSPATH 134 notes.ini file 83 Noteslog 61 Novell Directory Services 128 Novell Network Services 125 nsd.sh shell script 45 125 303 O Obey 242 OMVS 242 OS/390 UNIX System Services definition 1 P PATH 134 pcnfsd 241, 245, 252 PING 251 POP3 server 105 PORTMAP 241 Print Interface 266 ps command 53 R RACF performance suggestions recovery 181 Referer log 60 replicas 126 229 S server logs 214 ServletExpress 233 ServletExpress support 217 SETOMVS command 40 Simple Mail Transfer Protocol 96 SMF exit IEFUSI 36 SMTP 96 SMTP server 105 Sockets 239, 241 SSL 230 SSL and hardware encryption 230 STARTED class definitions 188 Starting DFS daemons 203 starting the NFS server 245 T TCP 239, 240, 241, 262 Tell commands 75 trace output from DCEKERN 195 transaction logging 100 Troubleshooting aids 115 TSO/E MOUNT command 246 U UNIX commands 51 Update and Updall tasks 79 W Web server (HTTP) crashes 103 Web server's performance 225 WebSphere Application Server 211, 233 WebSphere Manager applet 234 Windows 239, 249 304 Debugging UNIX Applications on OS/390 ITSO Redbook evaluation Debugging UNIX Applications on OS/390 SG24-5613-00 Your feedback is very important to help us maintain the quality of ITSO redbooks. Please complete this questionnaire and return it using one of the following methods: • Use the online evaluation form found at http://www.redbooks.ibm.com/ • Fax this form to: USA International Access Code + 1 914 432 8264 • Send your comments in an Internet note to redbook@us.ibm.com Which of the following best describes you? _ Customer _ Business Partner _ Solution Developer _ None of the above _ IBM employee Please rate your overall satisfaction with this book using the scale: (1 = very good, 2 = good, 3 = average, 4 = poor, 5 = very poor) Overall Satisfaction __________ Please answer the following questions: Was this redbook published in time for your needs? Yes___ No___ If no, please explain: What other redbooks would you like to see published? Comments/Suggestions: © Copyright IBM Corp. 1999 (THANK YOU FOR YOUR FEEDBACK!) 305 Printed in the U.S.A. Debugging UNIX Applications on OS/390 SG24-5613-00 SG24-5613-00