RE: Informix 9.40 crash after stress test.
Posted in 2003
The user controls whether he connects using a TCP/IP connection vs. a SHM
connection by setting the INFORMIXSERVER environment variable or explicitly
selecting a server in his SQL. You can see how a user is connected using
"onstat -g ses".
But that's not your problem here.
Your getting errno 24 because your server is allocating too many shared
memory segments.
#define EMFILE 24 /* Too many open files */
With these settings:
SHMVIRTSIZE 87500 # initial virtual shared memory segment size
SHMADD 16384 # Size of new shared memory segments (Kbytes)
SHMTOTAL 419430 # Total shared memory (Kbytes). 0=>unlimited
you have the possibility of allocating (419430 - 87500) / 16384 = 20 shared
memory segments. Obviously more than the OS is configured to allow. Fix
this particular problem by making SHMADD large enough or SHMTOTAL small
enough so that you do not exceed SHMSEG. Or set SHMSEG in the kernel to
allow the number you are allocating.
Of course you still have a problem with a user trying to use to much virtual
memory. At least your server will not crash.
Regards,
Bill Dare
> -----Original Message-----
> From: sharad [SMTP:sha_pawar@hotmail.com]
> Sent: Thursday, July 31, 2003 8:00 AM
> To: informix-list@iiug.org
> Subject: Informix 9.40 crash after stress test.
>
> Hi ,
>
> I had install informix 9.40 UC2 on AIX 5.2.
> did anybody has idea how to check informix server is using tcp connection
> and not shared memory connection.How to check memory leak in informix
> server
> ?
>
> Here is some portion of online.log file .
> ===============================================================
> 16:28:31 shmat: [EMFILE][24]: out of shared memory segments, check system> SHMSEG
>
> 16:28:31 shmdt: errno = 22
> 16:28:31 out of virtual shared memory
>
> 16:28:31 shmat: [EMFILE][24]: out of shared memory segments, check system> SHMSEG
>
> 16:28:31 shmdt: errno = 22
> 16:28:31 out of virtual shared memory
>
> 16:28:31 Assert Failed: No Exception Handler
> 16:28:31 IBM Informix Dynamic Server Version 9.40.UC2
> 16:28:31 Who: Session(16, informix@adolphus, 5002, 40215d00)
> Thread(40, sqlexec, 401e5e68, 1)
> File: mtex.c Line: 431
> 16:28:31 Results: Exception Caught. Type: MT_EX_OS, Context: mem
> 16:28:31 Action: Please notify IBM Informix Technical Support.
> 16:28:31 stack trace for pid 32182 written to /tmp/af.410fd5e
> 16:28:31 See Also: /tmp/af.410fd5e, shmem.410fd5e.0
> 16:29:06 mtex.c, line 431, thread 40, proc id 32182, No Exception
> Handler.
> 16:29:08 The Master Daemon Died
> 16:29:08 PANIC: Attempting to bring system down
> ===============================================================> onconfig :file
> shared memory not initialized for INFORMIXSERVER 'fpt_server'
>
> Configuration File: /dbms/informix/etc/onconfig.file
>
> #*************************************************************************
> *
>
> #
>
> # INFORMIX SOFTWARE, INC.
>
> #
>
> # Title: onconfig.std
>
> # Description: Informix Dynamic Server Configuration Parameters
>
> #
>
> #*************************************************************************
> *
>
> # Root Dbspace Configuration
>
> ROOTNAME rootdbs # Root dbspace name>
> ROOTPATH /dbms/informix/data/fpt_data
>
> ROOTOFFSET 0 # Offset of root dbspace into device (Kbytes)
>
> ROOTSIZE 200000 # Size of root dbspace (Kbytes)>
> # Disk Mirroring Configuration Parameters
>
> MIRROR 0 # Mirroring flag (Yes = 1, No = 0)
>
> MIRRORPATH # Path for device containing mirrored root
>
> MIRROROFFSET 0 # Offset into mirrored device (Kbytes)>
> # Physical Log Configuration
>
> PHYSDBS rootdbs # Location (dbspace) of physical log
>
> PHYSFILE 2000 # Physical log file size (Kbytes)>
> # Logical Log Configuration
>
> LOGFILES 6 # Number of logical log files
>
> LOGSIZE 2000 # Logical log size (Kbytes)>
> # Diagnostics
>
> MSGPATH /dbms/informix/online.log # System message log file path
>
> CONSOLE /dev/console # System console message path>
> # To automatically backup logical logs, edit alarmprogram.sh and set
>
> # BACKUPLOGS=Y
>
> ALARMPROGRAM /dbms/informix/etc/no_log.sh # Alarm program path
>
> TBLSPACE_STATS 1 # Maintain tblspace statistics>
> # System Archive Tape Device
>
> TAPEDEV /dev/tapedev # Tape device path
>
> TAPEBLK 32 # Tape block size (Kbytes)
>
> TAPESIZE 10240 # Maximum amount of data to put on tape (Kbytes)>
> # Log Archive Tape Device
>
> LTAPEDEV /dev/null # Log tape device path
>
> LTAPEBLK 32 # Log tape block size (Kbytes)
>
> LTAPESIZE 10240 # Max amount of data to put on log tape (Kbytes)>
> # Optical
>
> STAGEBLOB # Informix Dynamic Server staging area
>
> # System Configuration
>
> SERVERNUM 1 # Unique id corresponding to a OnLine instance
>
> DBSERVERNAME fpt_server # Name of default database server
>
> DBSERVERALIASES # List of alternate dbservernames
>
> NETTYPE soctcp,4,150,NET # Configure poll thread(s) for nettype
>
> DEADLOCK_TIMEOUT 60 # Max time to wait of lock in distributed env.
>
> RESIDENT 0 # Forced residency flag (Yes = 1, No = 0)
>
> MULTIPROCESSOR 0 # 0 for single-processor, 1 for multi-processor
>
> NUMCPUVPS 1 # Number of user (cpu) vps
>
> SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps to one
>
> NOAGE 0 # Process aging
>
> AFF_SPROC 0 # Affinity start processor
>
> AFF_NPROCS 0 # Affinity number of processors>
> # Shared Memory Parameters
>
> LOCKS 2000 # Maximum number of locks
>
> BUFFERS 20000 # Maximum number of shared buffers
>
> NUMAIOVPS # Number of IO vps
>
> PHYSBUFF 32 # Physical log buffer size (Kbytes)
>
> LOGBUFF 32 # Logical log buffer size (Kbytes)
>
> CLEANERS 1 # Number of buffer cleaner processes
>
> SHMBASE 0x30000000 # Shared memory base address
>
> SHMVIRTSIZE 87500 # initial virtual shared memory segment size
>
> SHMADD 16384 # Size of new shared memory segments (Kbytes)
>
> SHMTOTAL 419430 # Total shared memory (Kbytes). 0=>unlimited
>
> CKPTINTVL 150 # Check point interval (in sec)
>
> LRUS 8 # Number of LRU queues
>
> LRU_MAX_DIRTY 60.000000 # LRU percent dirty begin cleaning limit
>
> LRU_MIN_DIRTY 50.000000 # LRU percent dirty end cleaning limit
>
> TXTIMEOUT 0x12c # Transaction timeout (in sec)
>
> STACKSIZE 64>
> # Dynamic Logging
>
> # DYNAMIC_LOGS:
>
> # 2 : server automatically add a new logical log when necessary. (ON)
>
> # 1 : notify DBA to add new logical logs when necessary. (ON)
>
> # 0 : cannot add logical log on the fly. (OFF)
>
> #
>
> # When dynamic logging is on, we can have higher values for
> LTXHWM/LTXEHWM,
>
> # because the server can add new logical logs during long transaction
> rollback.
>
> # However, to limit the number of new logical logs being added,
>