问题描述:
每次我启动一个新的应用程序时(例如 Oracle 和 Perf),总是得到下面的错误信息:
crt0: Error couldn't open dld.sl errno: 000000023
同时syslog.log中也包含了这个错误信息:
File table overflow
该如何解决这个问题?
配置信息:CONFIGURATION
操作系统Operating System - HP-UX
版本Version - 11.0
子系统Subsystem - Oracle 8.0.5
解决方法:ESOLUTION
这两个问题与同一个问题有关,既dld.sl不能将任何文件装进内存。
从dld的人工页中看到:
dld.sl - 动态加载程序
说明:
/usr/lib/dld.sl 程序是一个动态加载程序。在使用共享程序库的程序中,/usr/lib/dld.sl在启动时被启动文件crt0.o自动调用。在/opt/langtools/lib/和
/usr/ccs/lib/目录中保存有的同样的crt0.o复制文件。该动态加载程序其实也是一个共享的程序库,只是它没有定义供用户使用的符号罢了。
文件表溢出错误说明系统文件表已经满了。系统已经达到表所能容纳的最大文件数。文件表时刻跟踪所有打开的文件。你可以通过提高内核程序参数的值来增加表容量 。
从nfile的人工页中看到:
nfile
说明:
nfile定义了能同时被打开的最大文件数,在任何时候它都处于系统开放状态。
使用SAM (System Administration Manager)去提高nfile的值。
注:这个方法应用于HP-UX 10.X和11.X。 N
1. 启动 SAM.
2. 选择'Kernel Configuration '子系统.
3. 选择'Configurable Parameters' 子系统.
4. 选择'maxusers'此内核程序参数.
5. 提高'maxusers'的值.
注:通常将'maxusers'的值增加两倍。增加此参数的值直到满足系统的需要。
6. 点击'OK'.
7. 证实已增加了nproc和 nfile的值。
8. 选择'Action'.
9. 点击'Create New Kernel', 同时按照提示信息向下执行。
警告:在你成功重建内核程序后,系统将会重新启动。你也可以选择推迟重新启动。在重新启动前必须关闭所有的应用程序,例如Oracle等。
如果你不能利用SAM去修改或建立一个新的内核程序,你也可以利用下面的命令行实现同样的结果:
注:此过程应用于HP-UX 10.X:
1. cd /stand/build
2. 创建一个新的系统文件:
/usr/lbin/sysadm/system_prep -v -s ./system
3. 通过增加maxusers参数值修改新系统文件:
maxusers
4. 构造一个新的内核程序:
mk_kernel -s ./system
5. 备份你的老内核程序和系统文件
mv /stand/vmunix /stand/vmunix.prev
mv /stand/system /stand/system.prev
6. 将新内核程序和系统文件移到正确位置:
mv /stand/build/vmunix_test /stand/vmunix
mv /stand/build/system /stand/system
7.重新启动系统:
shutdown -r -y 0 or reboot -r
注:此过程应用于HP-UX 11.X:
1. cd /stand/build
2. 创建一个新的系统文件:
/usr/lbin/sysadm/system_prep -v -s ./system
3.利用kmtune查看和修改内核程序参数:
A. 显示当前值:
kmtune -q maxuser
B. 递增 maxusers:
kmtune -s maxuser+
4. 建立一个新的内核程序:
mk_kernel -s ./system
5.利用kmupdate编排新内核程序的重定位和关闭后重新启动。
6. 重启动系统:
shutdown -r -y 0 or reboot -r
提供给你的信息:
maxusers
描述
maxusers 根据可能的系统资源访问系统的并发用户分配
为什么只增加maxusers的值? 增加maxusers将对其他同类型核心参数产生影响.
一些受影响的参数为nfile, nflocks, nproc, unlocable_mem 及bufpages。
.........following with all English text ....PROBLEM
I get the following error each time I start a new application
(for example Oracle and Perf):
crt0: Error couldn't open dld.sl errno: 000000023
syslog.log also contains this error:
File table overflow
How do I resolve these errors?
CONFIGURATION
Operating System - HP-UX
Version - 11.0
Subsystem - Oracle 8.0.5
RESOLUTION
The two errors are related to the same problem. dld.sl can't load
any more files into memory.
Per the dld man page:
dld.sl - dynamic loader
DESCRIPTION
The /usr/lib/dld.sl program is the dynamic loader. In programs
that use shared libraries, /usr/lib/dld.sl is automatically
invoked at startup time by the startup file crt0.o. Identical
copies of crt0.o are kept in both /opt/langtools/lib/ and
/usr/ccs/lib/ directories. The dynamic loader is, itself, a
shared library, although it defines no symbols for use by user
programs.
The file table overflow error means that the system file table
is full. The system has reached the maximum amount of files that the
table can hold. This table keeps track of all open files. You can
increase this table by increasing the value of the 'nfile' kernel
parameter.
Per the nfile man page:
nfile
DESCRIPTION
nfile defines the maximum number of files that can be open
simultaneously, system-wide, at any given time.
Using SAM (System Administration Manager) to increase the nfile
value:
Note: This information applies to HP-UX 10.X and 11.X.
1. Start SAM.
2. Select the 'Kernel Configuration' subsystem.
3. Select the 'Configurable Parameters' subsystem.
4. Select the 'maxusers' kernel parameter.
5. Increase the 'maxusers' value.
Note: You usually double the 'maxusers' value. Increase this
value to meet your system needs.
6. Click 'OK'.
7. Verify that the nproc and nfile values were increased.
8. Select 'Action'.
9. Click 'Create New Kernel', and follow the instructions.
Warning: The system will reboot after you successfully rebuild
the kernel. You also have the option to defer the reboot.
Make sure that you stop all applications, such as Oracle,
that need to be stopped before the system reboots.
If you cannot use SAM to modify and build a new kernel, you can use
the command line to accomplish the same results:
Note: This procedure applies to HP-UX 10.X:
1. cd /stand/build
2. Create a new system file:
/usr/lbin/sysadm/system_prep -v -s ./system
3. Modify the new system file by increasing the maxusers parameter:
maxusers
4. Build a new kernel:
mk_kernel -s ./system
5. Backup your old kernel and system files:
mv /stand/vmunix /stand/vmunix.prev
mv /stand/system /stand/system.prev
6. Move the new kernel and system files to the proper place:
mv /stand/build/vmunix_test /stand/vmunix
mv /stand/build/system /stand/system
7. Reboot the system:
shutdown -r -y 0 or reboot -r
Note: This procedure applies to HP-UX 11.X:
1. cd /stand/build
2. Create a new system file:
/usr/lbin/sysadm/system_prep -v -s ./system
3. Use kmtune to view and modify kernel parameter:
A. Display the current value:
kmtune -q maxuser
B. Increment maxusers:
kmtune -s maxuser+
4. Build a new kernel:
mk_kernel -s ./system
5. Use kmupdate to schedule the re-location and shutdown-reboot
of the new kernel.
6.