我使用gcc在AIX6.1PPC系统中编译了Redis 3.0.6,但是当数据库试图超过2GB的RAM时,它就崩溃了。
编译器标志和环境变量是:
alias make="gmake"
export CC=gcc
export CFLAGS="-DAIX64 -DBIT64 -maix64 -D_AIX -D_AIX53 -D_AIX61 -I/opt/freeware/include -I/usr/include${CFLAGS_XTRA}"
export CXX=g++
export CXXFLAGS=$CFLAGS
export LDFLAGS="-DAIX64 -DBIT64 -maix64 -L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib/pthread/ppc64:/opt/freeware/lib:/usr/lib:/lib,-bmaxdata:0x80000000"
export AR="ar -X64"
export LIBPATH=.:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib
export OBJECT_MODE=64
echo Gcc environment variables \(CC,CFLAGS,LDFLAGS,LIBPATH,etc\) are set.但是,当它达到2GB的RAM时,它会使用以下日志崩溃:
41680910:M 12 Jan 12:46:13.056 # Out Of Memory allocating 102709 bytes!
41680910:M 12 Jan 12:46:13.056 # === REDIS BUG REPORT START: Cut & paste starting from here ===
41680910:M 12 Jan 12:46:13.056 # ------------------------------------------------
41680910:M 12 Jan 12:46:13.056 # !!! Software Failure. Press left mouse button to continue
41680910:M 12 Jan 12:46:13.057 # Guru Meditation: "Redis aborting for OUT OF MEMORY" #redis.c:3572
41680910:M 12 Jan 12:46:13.057 # ------------------------------------------------它也会崩溃,我试着执行
redis-server --test-memory 2048但如果我执行
redis-server --test-memory 2047所以很明显,它必须有一个2GB的限制,我找不到。
有什么想法或进一步的信息需要吗?
发布于 2016-01-12 19:08:30
试着省略-bmaxdata:0x80000000。在64位构建时,此参数将堆大小限制为2GB。在32位构建时,它将将低缺省值提高到2GB。
https://stackoverflow.com/questions/34748787
复制相似问题