问题:在使用数据库过程中报-2错误码该如何处理?
具体例子:对2亿条数据进行索引创建,创建失败,查看日志记录显示-2错误码
1.先查看系统内存,free –m
检查系统是否内存不足
2.查看Linux环境是否已按照信息中心推荐配置设置
输入ulimit –a查看配置,输出结果后注意查看其中的两条信息
1)max memory size 一个任务的常驻物理内存的最大值
2)virtual memory 没有限制进程的最大地址空间
如以上两条均未设置为建议值,建议用户设置之后再次尝试
设置方式如下:
在配置文件/etc/security/limits.conf中添加或修改:
#
* soft rss unlimited
* soft as unlimited
3.是否有设置vm.overcommit_memory 的值,如未设置,建议将该值设置为2。
Linux下该参数有三种取值,分别是0,1,和2三个值,默认值是0
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核不允许分配超过swap+RAM*系数的内存(参照overcmmit_retio),如果允许分配的内存资源已经都使用了,那么后面的任何尝试申请内存的进程都会返回错误。
文章分析:http://linuxperf.com/?p=102
不建议设值为1的原因是,当内存不足时,系统会杀掉进程来释放内存,而sdb的进程有可能会被杀掉,所以应该将此项设置为2.
4.修改系统参数后注意是否有重新登录或者执行想用的命令使其生效,如重新登录或执行$ /sbin/sysctl –p等