TUXEDO启动时报Cannot allocate memory_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3283 | 回复: 0   主题: TUXEDO启动时报Cannot allocate memory        下一篇 
刘习托
注册用户
等级:中士
经验:208
发帖:66
精华:0
注册:2011-11-23
状态:离线
发送短消息息给刘习托 加好友    发送短消息息给刘习托 发消息
发表于: IP:您无权察看 2014-11-13 14:53:11 | [全部帖] [楼主帖] 楼主

编译完成动态库后,启动tuxedo报错。

exec tux_aaa-A -e /cbs/log/err.log -o /cbs/log/out.log -- -S aaa:
tux_aaa: error while loading shared libraries: libtr_aaa.so: failed to map segment from shared object: Cannot allocate memory
CMDTUX_CAT:819: INFO: Process id=13810 Assume started (pipe).


编译动态库命令为:

gcc -o libtr_aaa.so -shared -fPIC $HOME/obj/*.o


操作系统为:RHEL5.3

系统内存大小为1G

ulimit属性为 ulimit -m unlimited

网上查询出的方法都试过了,问题依然,直接执行tux_aaa也会报错:

tux_aaa: error while loading shared libraries: libtr_aaa.so: failed to map segment from shared object: Cannot allocate memory


还请各位大侠解释为什么。

我用cat /proc/swaps查看了一下。

Filename                                Type            Size    Used    Priority
/dev/mapper/VolGroup00-LogVol01         partition       2097144 226956  -1
free -m
total       used       free     shared    buffers     cached
Mem:          1010        497        513          0         17        264
-/+ buffers/cache:        215        795
Swap:         2047        221       1826


后使用RHEL4,内存1.5G的编译,

使用:cc -o libtr_aaa.so -shared -fPIC $HOME/obj/*.o

问题同样。

该目录下有3000多少.o文件,尝试只使用其中20个左右,可以正常编译出服务,同时启动服务。

free -m
total       used       free     shared    buffers     cached
Mem:          1518        925        592          0         52        712
-/+ buffers/cache:        160       1357
Swap:         1983          0       1983


正常启动时内存使用情况如上。

后用strace查看:

可正常启动时:

old_mmap(NULL, 291216964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xa6a46000


不能正常启动时:

old_mmap(NULL, 323745088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = -1 ENOMEM (Cannot allocate memory)


现问题是无法定位这个到底是编译时的问题,还是操作系统问题?还是别的什么问题?

PS:


编译服务的脚本为:

buildserver -v -f "-ltr_$server" -f "$DLIBS" -f "$ORALIBS -lm -lc " -o "$RUNDIR/bin/tux_$server.new" -s "$server"_01:RUNSERVER -s "$server"_02:RUNSERVER -s "$server"_03:RUNSERVER


后使用16G内存的物理机器,问题依然。

free -m
total       used       free     shared    buffers     cached
Mem:         16238       1483      14754          0         91       1228
-/+ buffers/cache:        163      16074
Swap:         1983          0       1983


ulimit设置如下:

ulimit -a
address space limit (kbytes)   (-M)  unlimited
core file size (blocks)        (-c)  unlimited
cpu time (seconds)             (-t)  unlimited
data size (kbytes)             (-d)  unlimited
file size (blocks)             (-f)  unlimited
locks                          (-L)  unlimited
locked address space (kbytes)  (-l)  32
nofile                         (-n)  1024
nproc                          (-u)  278528
pipe buffer size (bytes)       (-p)  4096
resident set size (kbytes)     (-m)  unlimited
socket buffer size (bytes)     (-b)  4096
stack size (kbytes)            (-s)  unlimited
threads                        (-T)  not supported
process size (kbytes)          (-v)  unlimited


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论