No startup acknowledgement from forked process after 30 seconds

在使用Oracle数据库时遇到内存不足导致的多个错误,包括进程内存不足、服务器进程创建问题和Oracle错误。通过降低SGA和PGA大小以及使用内存清理工具,解决了系统资源不足的问题。重启数据库后,异常得到解决。
[size=medium]摘抄2篇文章。都是这个问题的描述,结果都是没有办法解决,直接重启搞定的。我的环境是WINDOWS2003-32+ORACLE9201,最后附上我的alert.log部分内容以供参考 [/size]
http://space.itpub.net/471666/viewspace-118586
ORA-04030: 在尝试分配 1049100 字节 (pga heap,KSFQ Buffers) 时进程内存不足
上一篇 / 下一篇 2007-08-31 00:00:00 / 个人分类:Oracle DBA

查看( 1845 ) / 评论( 1 ) / 评分( 0 / 0 )
ORA-04030: 在尝试分配 1049100 字节 (pga heap,KSFQ Buffers) 时进程内存不足

OS :WINDOWS 2000 SP4 内存:2G

DB:ORACLE 9201

altert.log 错误

Control autobackup failed with following error :
ORA-19583: 交谈因错误而终止
ORA-04030: 在尝试分配 1049100 字节 (pga heap,KSFQ Buffers) 时进程内存不足
Wed Aug 29 09:20:28 2007

LISTENR.LOG 错误

TNS-12500: TNS:监听器未能启动专用的服务器进程
TNS-12540: TNS:超出内部极限限制
TNS-12560: TNS: 协议适配器错误
TNS-00510: 超出内部极限限制
32-bit Windows Error: 8: Exec format error


Wed Aug 29 15:57:24 2007
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn

在网上查找类似错误

大概如下:
skgpspawn failed: skgpspawn 这个创建 process处理有问题
category = 27143, 错误分类
depinfo = 11, is the o/s errno [EACCES]
error may indicate the requested file is not available
which may be an effect that the process did not start and hence
its proc entries were not created.

op = spdcr, 系统调用spdcr错
loc = skgpspawn 位置是skgpspawn


造成这种错误有两种可能:

1,系统资源不足。

2。oracle bug,需要升级到9208

检查系统:

1.用windows企业管理器查看系统进程,发现oracle占用1.2g物理内存,1.8G虚拟内存。

2. 系统中内存使用2.2G.

由此判断可能是系统资源不足,内存不够,检查数据库初始化参数。

SGA:1.1g

SHARED POOL :230m

DATA BUFFER : 680m

LAREGE POOL :140m

PGA : 250m

3.出现此问题前一天,cpu 达到100%,是由于报表导致。kill session 后 cpu正常。

分析可能由于报表原因导致大量使用内存。os不能释放。导致系统资源不足。

解决办法:

1。降低了SGA和PGA

SHARED POOL :160m

DATA BUFFER : 480m

LAREGE POOL : 64m (使用rman备份)

PGA : 200m

减少了数据库内存,并使用了内存清理工具。但是虚拟内存降不下来,alter中还继续出现skgpspawn failed:category = 27143,

depinfo = 9261, op = spdcr, loc = skgpspawn ,

客户端连接连接数据库提示:TNS-12500: TNS:监听器未能启动专用的服务器进程。

没有办法,只能重启数据库后在观察了。


2。数据库服务器重启后,至今为发现异常。


奇怪的问题:ksbsrv: No startup acknowledgement from forked process after 30 secon上一篇 / 下一篇 2007-03-24 00:00:00 / 个人分类:oracle 数据库

查看( 223 ) / 评论( 0 ) / 评分( 0 / 0 )
HPUX11i + ORACLE9.2.0.6

昨天早晨,正在家里,突然接到同事的电话,说ODS数据库不能进行连接了,赶紧跑到单位,自己利用sqlplus 普通用户果然连接不上,报告shared memory inavaliable!但是因为昨天我用pl/sql developer进行操作完后,并没有关掉连接,利用它直接执行一个sql ,没想到还能正常执行,奇怪至极。


察看alert.log 文件,竟然大部分都是以下错误:

DELETE FROM T_CS_CXPXDY WHERE SQL_XH = :1
Thu Mar 22 19:19:28 hu Mar 22 19:22:01
ksbsrv: No startup acknowledgement from forked process after 30 seconds
g0Thu Mar 22 19:24:33 ksbsrv: No startup acknowledgement from forked process after 30 seconds

Thu Mar 22 21:52:01 2007
6`&xgF(T,wG'F'h%[0SELECT /*+ Q160113000 NO_EXPAND ROWID(A1) */ A1.ROWID,A1."SQL_XH",A1."XH" FROM "DB_ODS"."T_CS_CXPXDY" PX_GRANULE(0, BLOCK_RANGE, DYNAMIC) A1 WHERE A1."SQL_XH"=:B1
Thu Mar 22 21:52:01 2007
0ORA-01555 caused by SQL statement below (Query Duration=1174571518 sec, SCN: 0x0000.b1d48904):
H0Thu Mar 22 21:52:01 2007
TD0SELECT /*+ Q160113000 NO_EXPAND ROWID(A1) */ A1.ROWID,A1."SQL_XH",A1."XH" FROM "DB_ODS"."T_CS_CXPXDY" PX_GRANULE(0, BLOCK_RANGE, DYNAMIC) A1 WHERE A1."SQL_XH"=:B1

在google 上搜到一篇文章:

CPU LOAD

(Excerpt from a TAR - still open)

>From time to time, our Oracle test server (9.2.0.4 on Intel/Linux, 2

CPUs) got unusuable at CPU load of 99% as shown by top; in this state, nothing else could be done with Oracle, even trying to connect via sqlplus took about 1 hour (assuming one would wait that long). Processes running were Oracle processes and kswap (meaning that swapping was heavily taking place).

Users complain in such a situation and my only remedy has been to reboot the server. pstack and oradebug could not be used. After analyzing lots of things we found out that nothing seems to be wrong with the database - it is just that a very inefficient query is running which blocks the Oracle server and avoids any other activity. Well, one message was found in the alert log, saying ksbsrv: No startup acknowledgement from forked process after 30 seconds
G0but no ORA- error appears.
0Statspack Reports revealed a unusuable high "process startup" wait time.

According to my experience under the Sun/Solaris platform, even if the 4 CPUs of our E3500 are at maximum load (showing an average idle of 0%), the Oracle (8.1.7) server is still available for new sessions (which run of course slower than usual). This happens quite often by the way, so it is a reliable experience.

Assuming that the situation is caused by a bad query, I am concerned about the limited responsiveness of the server, since most of our queries are of batch type and run hours in the production platform, which is Sun/Solaris 7. If we transfer the production DB to the new, much faster Intel/Linux platform, we could have heavy trouble when such batch job run. They would be served in a first-in first-out base serialized one after one (limited by the number of CPUs available).

Is there a way to adjust priorities or something to guarantee an even distribution of computing power of the Oracle server? Is this more a operating system problem than it is an oracle one? (Note: at the OS level, reactivity is much better). We use RedHat Linux AS 2.1 with asynch_io=true. This is supposed to be a certified environment (Dell Power Edge 2650) for enterprise use of Oracle.

Oracle Corp. is quite clueless until now, so my question to the forum.

Thanks in advance

因为昨天我对物化试图进行了调整,每个物化试图的并行度由3 增加到了16,我以为是这个原因造成的,但是一看alert.log 的报警时间是晚上7:00多,而物化试图的刷新是在凌晨,于是排除了这个原因!但是因为有ora-01555的错误,并且因为t_cs_cxpxdy 只有5296条数据,不可能Duration=1174571518 sec,所以我想可能是server process 创建问题或者是oracle bug 之类的!

SQL> connect / as sysdba;

connect an idle instance

SQL>shutdown immediate;

竟然报错

SQL> startup ;

ORA-01031: insufficient privileges

莫名其妙!

但是无意中发现oracle 下的文件的属主变成了root,继续查看,竟然不少文件属主都是变成了root,不解!!
于是执行
chown -R oracle:dba /opt/oracle
su - oracle
sqlplus /nolog
SQL>connect / as sysdba;
SQL>startup ;ITPUB个人空间!
报错
然后报权限不足。
ps -ef | grep oracle
发现竟然仍然有很多的oracle process
没办法,实在是没办法,只好重新启动小型机了
重新启动小型机后,重新启动数据库,一切恢复了正常!!


[color=red]alert.log的内容。[/color]
Wed Nov 21 13:34:53 2012
Thread 1 advanced to log sequence 20868
Current log# 1 seq# 20868 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO01.LOG
Wed Nov 21 14:04:54 2012
Thread 1 advanced to log sequence 20869
Current log# 2 seq# 20869 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO02.LOG
Wed Nov 21 14:34:25 2012
Thread 1 advanced to log sequence 20870
Current log# 3 seq# 20870 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO03.LOG
Wed Nov 21 15:04:00 2012
Thread 1 advanced to log sequence 20871
Current log# 4 seq# 20871 mem# 0: F:\ORACLE_LOG\LOG4\LOG4.LOG
Wed Nov 21 15:34:06 2012
Thread 1 advanced to log sequence 20872
Current log# 5 seq# 20872 mem# 0: F:\ORACLE_LOG\LOG5\LOG5.LOG
Wed Nov 21 16:05:19 2012
Thread 1 advanced to log sequence 20873
Current log# 1 seq# 20873 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO01.LOG
Wed Nov 21 16:36:25 2012
Thread 1 advanced to log sequence 20874
Current log# 2 seq# 20874 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO02.LOG
Wed Nov 21 17:08:33 2012
Thread 1 advanced to log sequence 20875
Current log# 3 seq# 20875 mem# 0: D:\ORACLE\ORADATA\HAPH\REDO03.LOG
Wed Nov 21 17:40:42 2012
Thread 1 advanced to log sequence 20876
Current log# 4 seq# 20876 mem# 0: F:\ORACLE_LOG\LOG4\LOG4.LOG
Wed Nov 21 20:00:05 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:02:59 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:52:16 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:52:27 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:52:37 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:52:57 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:53:08 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:56:07 2012
ksbsrv: No startup acknowledgement from forked process after 30 seconds
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Wed Nov 21 20:56:53 2012
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
Dump file d:\oracle\admin\haph\bdump\alert_haph.log
Wed Nov 21 21:25:55 2012
ORACLE V9.2.0.1.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Wed Nov 21 21:25:55 2012
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
SCN scheme 2
Using log_archive_dest parameter default value
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 9.2.0.1.0.
System parameters with non-default values:
processes = 150
timed_statistics = TRUE
shared_pool_size = 109051904
sga_max_size = 1343825276
large_pool_size = 209715200
java_pool_size = 33554432
control_files = D:\oracle\oradata\haph\CONTROL01.CTL, D:\oracle\oradata\haph\CONTROL02.CTL, D:\oracle\oradata\haph\CONTROL03.CTL
db_block_size = 8192
db_cache_size = 838860800
compatible = 9.2.0.0.0
db_file_multiblock_read_count= 16
fast_start_mttr_target = 300
undo_management = AUTO
undo_tablespace = UNDOTBS1
undo_retention = 10800
remote_login_passwordfile= EXCLUSIVE
db_domain =
instance_name = haph
dispatchers = (PROTOCOL=TCP) (SERVICE=haphXDB)
job_queue_processes = 10
hash_join_enabled = TRUE
background_dump_dest = D:\oracle\admin\haph\bdump
user_dump_dest = D:\oracle\admin\haph\udump
core_dump_dest = D:\oracle\admin\haph\cdump
sort_area_size = 524288
db_name = haph
open_cursors = 300
star_transformation_enabled= FALSE
query_rewrite_enabled = FALSE
pga_aggregate_target = 25165824
aq_tm_processes = 1
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
CJQ0 started with pid=8
QMN0 started with pid=9
Wed Nov 21 21:25:58 2012
starting up 1 shared server(s) ...
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
Wed Nov 21 21:26:00 2012
alter database mount exclusive
Wed Nov 21 21:26:05 2012
Successful mount of redo thread 1, with mount id 3661874792.
Wed Nov 21 21:26:05 2012
Database mounted in Exclusive Mode.
Completed: alter database mount exclusive
Wed Nov 21 21:26:05 2012
alter database open
Wed Nov 21 21:26:05 2012
Beginning crash recovery of 1 threads
Wed Nov 21 21:26:05 2012
Started first pass scan
Wed Nov 21 21:26:06 2012
Completed first pass scan
34992 redo blocks read, 3809 data blocks need recovery
Wed Nov 21 21:26:06 2012
Started recovery at
Thread 1: logseq 20876, block 129631, scn 0.0
Recovery of Online Redo Log: Thread 1 Group 4 Seq 20876 Reading mem 0
Mem# 0 errs 0: F:\ORACLE_LOG\LOG4\LOG4.LOG
Wed Nov 21 21:26:14 2012
Ended recovery at
Thread 1: logseq 20876, block 164623, scn 0.2481648691
3809 data blocks read, 3809 data blocks written, 34992 redo blocks read
Crash recovery completed successfully
Wed Nov 21 21:26:16 2012
Thread 1 advanced to log sequence 20877
Thread 1 opened at log sequence 20877
Current log# 5 seq# 20877 mem# 0: F:\ORACLE_LOG\LOG5\LOG5.LOG
Successful open of redo thread 1.
Wed Nov 21 21:26:16 2012
SMON: enabling cache recovery
Wed Nov 21 21:26:17 2012
Undo Segment 1 Onlined
Undo Segment 2 Onlined
Undo Segment 3 Onlined
Undo Segment 4 Onlined
Undo Segment 5 Onlined
Undo Segment 6 Onlined
Undo Segment 7 Onlined
Undo Segment 8 Onlined
Undo Segment 9 Onlined
Undo Segment 10 Onlined
Successfully onlined Undo Tablespace 1.
Wed Nov 21 21:26:17 2012
SMON: enabling tx recovery
Wed Nov 21 21:26:17 2012
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Completed: alter database open
<think>首先,用户的问题是关于解决在运行 startup.sh 脚本时,第13行出现 "kill: (10519) - No such process" 错误的方法。用户提供了参考引用,其中引用[1]讨论了Tomcat启动和停止的问题,引用[2]是关于系统配置的错误解决。 从引用[1]中:"tail -n 1 /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in' INFO: Server startup in 37417 ms" 这表示Tomcat启动成功的标志。还提到使用autostart方式会先停止后启动,所以需要sleep足够时间再检测,否则可能出现启动多个Tomcat进程的问题。最后给出了杀死多个Tomcat进程的命令。 引用[2]是关于线程数不够的错误解决,添加一些系统配置。 用户的问题是针对startup.sh脚本第13行的错误:"kill: (10519) - No such process"。这表明脚本尝试杀死一个不存在的进程。 我需要回忆一下Tomcat的启动脚本。通常,Tomcat的startup.sh脚本会调用catalina.sh脚本。在catalina.sh中,启动前可能会尝试停止正在运行的实例以避免冲突。 在标准的Tomcat catalina.sh脚本中,有一个部分用于停止正在运行的服务器实例,然后再启动。这涉及到查找PID文件并杀死进程。错误"kill: (10519) - No such process"意味着脚本试图杀死一个进程ID为10519的进程,但该进程不存在。这通常发生在PID文件存在,但对应的进程已经死亡的情况下。 引用[1]中提到:"由于是用autostart的方式会先执行停止后启动,一定不会重新最后一行是之前启动成功留下来的"。这表明在autostart模式下,脚本会先尝试停止Tomcat,然后再启动。但如果在停止时,进程已经不存在,就会出现这个错误。 为此,解决方法应该是在尝试杀死进程之前,检查进程是否还在运行。 解决方案步骤: 1. **修改脚本以避免不必要的kill命令**:在脚本中,在执行kill命令之前,检查PID文件是否存在,并且对应的进程是否还在运行。 2. **添加检查逻辑**:可以使用`ps`命令来检查PID是否存在。 3. **在sleep之后检查启动状态**:如引用[1]所建议,添加足够的sleep时间后再检测启动状态,以避免多个进程启动的问题。 4. **确保PID文件正确**:有时PID文件可能包含过时的信息;在启动前清理它。 具体到startup.sh脚本第13行。我需要回想标准Tomcat脚本的结构。startup.sh通常很简单,只是调用catalina.sh start。错误可能出现在catalina.sh中。 用户指定了错误在第13行,所以我应该假设这是在startup.sh脚本的第13行。可能用户的自定义脚本中有一个kill命令。 在引用[1]中,提到一个命令:"ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh",这可能用于杀死Tomcat进程。 用户的问题是关于错误出现在startup.sh的第13行,所以或许用户的startup.sh脚本中有类似的kill命令。 解决方案: - 在执行kill之前,检查进程是否还在运行。 - 例如,使用`if ps -p $PID > /dev/null; then kill $PID; fi`,其中$PID是从PID文件中读取的。 另外,引用[1]建议在启动脚本中添加sleep,以避免在Tomcat启动期间冲突。 结构化我的回答: 1. **解释错误原因**:错误是由于尝试杀死一个已经不存在的进程造成的。 2. **提供修改脚本的方法**:修改startup.sh或catalina.sh脚本,在执行kill命令前添加检查。 3. **添加sleep逻辑**:为了防止多个实例启动,在启动前添加sleep。 4. **清理PID文件**:确保在启动前移除旧的PID文件。 参考用户提供的引用: - 来自 [^1]:需要sleep足够时间再检测启动状态。 - 来自 [^2]:错误3是线程数不够,但可能不直接相关,除非错误是由于资源不足导致进程崩溃。 在回答中,自然地添加引用标识。 最后,生成相关问题。 回答结构: - 介绍错误原因。 - 详细步骤解决。 - 代码示例(如果需要)。 - 相关问题。 代码格式:使用代码块。 </think>### 解决 `startup.sh` 脚本第 13 行出现 "kill: (10519) - No such process" 错误的方法 该错误表明脚本尝试杀死进程 ID(PID)为 `10519` 的进程,但该进程不存在。常见原因包括: - **PID 文件残留**:Tomcat 停止后未清理 PID 文件(如 `catalina.pid`),导致脚本读取过期的 PID 值[^1]。 - **进程已终止**:Tomcat 进程已通过其他方式(如手动终止或崩溃)退出,但脚本仍尝试杀死它。 - **并发启动问题**:`autostart` 模式下,脚本先执行停止操作再启动,若未添加足够延迟,可能触发多个进程竞争资源[^1]。 以下是分步解决方法: #### 步骤 1: **修改脚本,添加进程存在性检查** 在 `/startup.sh` 的第 13 行(或关联的 `catalina.sh`)中,在执行 `kill` 命令前添加 PID 存在性检查。 - **定位错误行**:用文本编辑器打开 `startup.sh`,找到第 13 行(通常类似 `kill -9 $PID`)。 - **替换为安全逻辑**: ```bash # 原始行(示例): kill -9 $PID # 修改后: 检查 PID 是否存在后再杀死 if ps -p $PID > /dev/null 2>&1; then kill -9 $PID echo "Killed process $PID" else echo "Process $PID does not exist, skipping kill" fi ``` - **关键点**: - `ps -p $PID` 检查 PID 是否有效,`> /dev/null` 抑制输出。 - 避免尝试杀死无效进程,消除错误 `No such process`。 #### 步骤 2: **添加启动延迟,防止进程竞争** 在启动命令前增加 `sleep`,确保 Tomcat 完全停止后再启动(参考引用[^1]的建议)。 - **在启动逻辑前插入延迟**: ```bash # 添加在启动命令前(例如 catalina.sh start 之前) echo "Waiting for previous instance to terminate..." sleep 40 # 延迟 40 秒(根据实际启动时间调整) ``` - **为什么需要延迟**: - Tomcat 启动需约 40 秒(引用[^1]),若未等待足够时间,`autostart` 可能误判进程状态,导致多个实例冲突和 PID 残留。 #### 步骤 3: **清理残留 PID 文件** 在脚本开头强制删除旧 PID 文件: ```bash # 添加在脚本起始位置 PID_FILE="$CATALINA_BASE/catalina.pid" if [ -f "$PID_FILE" ]; then rm -f "$PID_FILE" echo "Removed stale PID file" fi ``` #### 步骤 4: **增强错误处理和日志** 添加日志输出,便于调试: ```bash # 在关键操作后添加日志记录 echo "[$(date)] Checking PID $PID" >> /path/to/startup.log if [ ! -f "$PID_FILE" ]; then echo "[$(date)] PID file missing" >> /path/to/startup.log fi ``` ### 注意事项 1. **验证 Tomcat 状态**:启动后检查日志确认成功: ```bash tail -n 1 /home/server/shichuan/logs/catalina.out | grep 'INFO: Server startup in' ``` 输出 `INFO: Server startup in XXX ms` 表示启动成功[^1]。 2. **系统资源检查**:确保系统资源充足(如线程数限制),引用[^2]的错误可能与资源不足相关: - 编辑 `/etc/security/limits.conf`,添加: ``` * soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096 ``` 3. **彻底杀死残留进程**:若问题持续,手动清理: ```bash pgrep -f catalina | xargs kill -9 # 杀死所有 Tomcat 进程 rm -f "$PID_FILE" # 删除 PID 文件 ``` ### 相关问题 1. 如何避免 Tomcat PID 文件残留导致的启动失败? 2. Tomcat `autostart` 模式下如何优化停止-启动流程? 3. Linux 中如何排查进程已终止但 PID 文件未删除的问题? 4. 如何自动化检测并清理无效的 PID 文件? 通过以上步骤,可解决 `kill: (10519) - No such process` 错误并确保 Tomcat 稳定启动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值