Re: [HACKERS] More postmaster troubles

Поиск
Список
Период
Сортировка
От Tatsuo Ishii
Тема Re: [HACKERS] More postmaster troubles
Дата
Msg-id 199902130603.PAA00422@ext16.sra.co.jp
обсуждение исходный текст
Ответ на More postmaster troubles  ("Daryl W. Dunbar" <daryl@www.com>)
Ответы RE: [HACKERS] More postmaster troubles  ("Daryl W. Dunbar" <daryl@www.com>)
Список pgsql-hackers
> Solaris7 on a Sparc20 running 6.4.2.  Occasionally (once or twice a
> day) under a very light load, brain-dead child processes begin to
> accumulate in my system.  If left unchecked, eventually the parent
> process runs out of resources and dies, orphaning all the lost
> processes.  (Now that I have solved the semaphore error, it appears
> to be the backend limit of 64 processes.)

Have you installed following patches? This solves the problem when #
of backends reaches MaxBackendId. I'm not sure if your problem relates
to this, though.

-------------------------------- cut here ---------------------------
*** postgresql-6.4.2/src/backend/postmaster/postmaster.c.orig    Sun Nov 29 10:52:32 1998
--- postgresql-6.4.2/src/backend/postmaster/postmaster.c    Sat Jan  9 18:14:52 1999
***************
*** 238,243 ****
--- 238,244 ---- static long PostmasterRandom(void); static void RandomSalt(char *salt); static void
SignalChildren(SIGNAL_ARGS);
+ static int CountChildren(void);  #ifdef CYR_RECODE void        GetCharSetByHost(char *, int, char *);
***************
*** 754,764 ****                  * by the backend.                  */ 
!                 if (BackendStartup(port) != STATUS_OK)
!                     PacketSendError(&port->pktInfo,                                     "Backend startup failed");
!                 else
!                     status = STATUS_ERROR;             }              /* Close the connection if required. */
--- 755,771 ----                  * by the backend.                  */ 
!                                 if (CountChildren() < MaxBackendId) {
!                     if (BackendStartup(port) != STATUS_OK)
!                         PacketSendError(&port->pktInfo,                                     "Backend startup
failed");
!                     else {
!                         status = STATUS_ERROR;
!                     }
!                 } else {
!                     PacketSendError(&port->pktInfo,
!                     "There are too many backends");
!                 }             }              /* Close the connection if required. */
***************
*** 1617,1620 ****
--- 1624,1655 ----     }      return random() ^ random_seed;
+ }
+ 
+ /*
+  * Count up number of chidren processes.
+  */
+ static int
+ CountChildren(void)
+ {
+     Dlelem       *curr,
+                *next;
+     Backend    *bp;
+     int            mypid = getpid();
+     int    cnt = 0;
+ 
+     curr = DLGetHead(BackendList);
+     while (curr)
+     {
+         next = DLGetSucc(curr);
+         bp = (Backend *) DLE_VAL(curr);
+ 
+         if (bp->pid != mypid)
+         {
+             cnt++;
+         }
+ 
+         curr = next;
+     }
+     return(cnt); }



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Ken Mort"
Дата:
Сообщение: 8K block limit
Следующее
От: Peter T Mount
Дата:
Сообщение: JDBC lo crashes etc (fwd)