免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4333 | 回复: 12
打印 上一主题 下一主题

那位仁兄能帮忙分析一下生产环境中informix 出错原因。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-13 16:26 |只看该作者 |倒序浏览
今天早上上班,发现一个数据处理没有完成。
onstat -d
onstat -p
onstat -
均正常。dbaccess 进去,不能选择数据库。

整个数据库大概有30G左右。

每天的处理过程是这样的:
每天晚上从另一台机上抽取900M左右的数据,以文本形式保存在本地,并打好一个tar包做备份。然后立即开始数据加工工作。一次加工要7个小时左右(要命啊)

查看生成的tar包的间为:02:26:05。对比online.log文件中的出错的时间查看后。发现数据加工作好像根本没有执行就发生了错误。

这个informix上还有好几个关键的应用在跑。所以只有先停了所有的应用,再重启informix,
然后再用备份的数据包加工却显示一切正常。

现在是正常的,就怕下次再出错就麻烦了。那位仁兄能帮忙分析一下出错原因么?

online.log 显示如下的错误:

02:25:25  Checkpoint Completed:  duration was 0 seconds.
02:25:25  Checkpoint loguniq 2199, logpos 0x47b3018

02:26:27  Message 19368 not found.

02:26:27  Informix Dynamic Server Version 7.31.UD5
02:26:27  Message 19369 not found.
Session(33378, informix@, 0, 0)
                Thread(11, soctcplst, 0, 1)
                File: mtshpool.c Line: 2848
02:26:27  Message 19370 not found.

02:26:27  Message 19371 not found.

02:27:24  Message 19372 not found.
, shmem.3f3b1d1.0
02:30:30  Checkpoint Completed:  duration was 0 seconds.
02:30:30  Checkpoint loguniq 2199, logpos 0x47b6018

02:35:30  Checkpoint Completed:  duration was 0 seconds.
02:35:30  Checkpoint loguniq 2199, logpos 0x47b7018

02:39:02  listener-thread: err = -406: oserr = 0: errstr = : Memory allocation failed.

02:39:02  listener-thread: err = -406: oserr = 0: errstr = : Memory allocation failed.

02:39:03  listener-thread: err = -406: oserr = 0: errstr = : Memory allocation failed.

02:39:04  listener-thread: err = -406: oserr = 0: errstr = : Memory allocation failed.

$ finderr 406
-406    Memory allocation failed.

Something in the current statement required the allocation of memory
for data storage, but the memory was not available. Several things can
cause this error. For example, your application has a memory leak; you
are asking for more resources than the system is configured to allow;
or a problem with the UNIX system itself requires rebooting the
system.

Roll back the current transaction. Look for ways to make this statement
simpler or move less data. Also, confer with your UNIX system
administrator to solve memory problems or look for ways to make the
operating system give this program more virtual memory in which to run.
On DOS systems, exit to the operating-system command line, free some
disk space, and resubmit your program.

将shmadd 改为64M后,又出现了几次同样的问题。都是在一个数据加工的启动瞬间。
这个过程是这样的:
应用run.sh从另一个服务器每天取>900M的数据,然后tar包,compress并移到另一个目录。
然后调用一个加工程序:attemp。一执行这个attemp,informix就出上面的错。
如attemp 1:25:22秒开始
informix  1:25:23秒出错。
报错持续。
7,8点钟发现informix不能访问。
vmstat 2 5 看系统内存 cpu等都正常。
topas也一样。
onstat -g seg 看到只有两个段 V 类 shmseg 只有一个
onstat -p
onstat -d
onstat -g ioq
onstat -g glo
均正常。

[ 本帖最后由 Jens 于 2006-8-19 12:39 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-06-14 11:15 |只看该作者
能不能将你的环境变量,sqlhosts,还有onconfig文件贴出来.

论坛徽章:
0
3 [报告]
发表于 2006-06-14 11:30 |只看该作者
检查一下onconfig里面的内存参数设置,以及现有实例的内存使用情况

论坛徽章:
0
4 [报告]
发表于 2006-06-14 16:03 |只看该作者
406 内存分配失败。

在当前语句中某些内容要求为数据存储分配内存,但内存不可使用。几件事情可能导
致这个错误,包括:你的应用有一个内存漏洞;你正在请求比系统允许配置的更多的
资源;或者UNIX系统本身有问题需要重启该系统。

滚回当前事务。设法使这个语句更简单或移动更少的数据。也可以与你的 UNIX 系统
管理员商量解决内存问题或者设法使操作系统给这个程序更多的虚拟内存,以在其内
运行这个程序。在 DOS 系统,退出操作系统命令行,释放一些磁盘空间,并重新
提交你的程序。

论坛徽章:
0
5 [报告]
发表于 2006-06-16 15:25 |只看该作者
谢谢各位。。
我们的生产环境生产机有8G内存,有两个informix(即多重驻留),
出错的informix的onconfig文件内容:(数据>30G)
BUFFER 200000
SHMBASE 0X30000000
SHMVIRTSIZE 128000
SHMADD 16000

另一个informix 的配置文件内容:(数据>12G)
BUFFER 350000
SHMBASE 0X30000000
SHMVIRTSIZE 128000
SHMADD 16000
两个informix 在同一台机上运行了近一年,最近才出的错。
不知道是不是因为:SHMBASE 都是0x30000000导致出错?

论坛徽章:
0
6 [报告]
发表于 2006-06-18 20:23 |只看该作者

回复 1楼 Jens 的帖子

是不是aix? 把SHMADD 16000改大点, 64000或128000

论坛徽章:
0
7 [报告]
发表于 2006-06-19 10:34 |只看该作者
同意楼上。很多OS是限制每个application使用memory segment的数量的。如果这个限制是8,你的配置最多只能申请128000+16000*7这么多

论坛徽章:
0
8 [报告]
发表于 2006-06-20 10:04 |只看该作者
谢谢。系统是aix 系统,怎么样才能看到系统限制每个application使用memory segment的数量的这个参数。我试试改到64000。再次感谢!

论坛徽章:
0
9 [报告]
发表于 2006-06-20 11:51 |只看该作者
刚刚查了一下,有人说:应用在AIX下内存段是自动地按需分配的,不用配置内存段最大个数这个参数。
我用lsattr -El sys0    ulimit -a 没看到有该参数。

我用onstat -g seg 看到内存段有7个。。改informix参数:SHMVIRTSIZE 160000   
SHMADD 64000

请问一下:怎么更改aix系统的每个应用最大分配内存段数目这个参数。

论坛徽章:
0
10 [报告]
发表于 2006-07-31 11:26 |只看该作者

informix启动时出错,哪位大侠帮忙看一下!多谢

10:09:41  Event alarms enabled.  ALARMPROG = '/usr/informix/log_full.sh'
10:09:46  DR: DRAUTO is 0 (Off)
10:09:46  INFORMIX-OnLine Initialized -- Shared Memory Initialized.
131$ 10:09:46  Physical Recovery Started.
10:09:46  Physical Recovery Complete: 0 Pages Restored.
10:09:46  Logical Recovery Started.
10:09:49  Logical Recovery Complete.
       0 Committed, 0 Rolled Back, 0 Open, 0 Bad Locks

10:09:49  Dataskip is now OFF for all dbspaces
10:09:49  On-Line Mode
10:09:49  Unable to create boot strap config file - '/usr/informix/etc/oncfg_onl
ine_fs.0'
10:09:49  Checkpoint Completed:  duration was 0 seconds.
10:09:50  Error 1 occurred executing /bin/sh /bin/sh -c /usr/informix/log_full.s
h 4 7 "OnLine Initialization failure." "Unable to create boot strap config file
- '/us
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP