XE의 mysqli 환경 가운데서 발생하는 오류를 잡기 위해 테스트 하다가 설치 후 초기 화면 조차 보이지 않는 문제를 당면하게 되었다.

맞닥뜨리게 된 에러는 다음과 같다.


Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4294967296 bytes) in .../classes/db/DBMysqli.class.php on line 234


4G 메모리 할당을 하다가 오류가 발생했다는 오류였다.

대부분 memeory 할당 오류는 php.ini 또는 ini_set을 통해 해결할 수 있다는 답변 뿐이였다.

예를 들어 http://www.xpressengine.com/qna/20836943 이런 식 ^^;;


그런데 php.ini에서 메모리를 4G 이상 5G를 줘도 문제가 발생했고

메모리의 제한이 없도록 -1을 준 경우에는 서버의 메모리를 다 쓰게 되어서 서버가 멈추는 현상까지 벌어지게 되었다.


따라서 처음에는 XE의 문제인줄 알고 Source code를 수정하고자 Debuging을 열심히 하였지만 도저히 방법이 보이지 않았다.


그러다가 4G라는 크기에 눈이 가게 되었고, 4G는 MySQL의 longtext type의 크기라는 것에 시선이 고정되게 되었다.

이를 기초로 구글링을 해보니 어떤 검색 결과에서는


CAST(`modules`.`content` AS char(20000))


와 같이 longtext type의 column의 type cast를 하라는 말이 나와 있었다.

물론 위와 같이 하니까 문제 없이 해결은 되었지만...

길이가 다르니 내용까지 짤려서 보일 듯 싶어서 왠지 깨름직 했다.


왠지 해결책은 매뉴얼에 있을 듯 싶어 php 매뉴얼을 뒤졌더니


http://kr2.php.net/manual/en/mysqli-stmt.bind-result.php#101543


위와 같이 똑같은 증상을 호소하는 사람이 있었다.

해당 내용에 연결된 버그리포트에는 해당 내용이 버그가 아니며 mysql 버그로 보인다라는 말이 있었다.

따라서 php 재설치 시 다음과 같은 옵션으로 설치해 보면 된다고 했다.


--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-mysqlnd


mysqlnd로 구글링 해 보니 또한 다음과 같은 문서도 나오더라.


http://www.lovelgw.com/Blog/316


애초에 설치 시에는 옵션을


--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/bin/mysql_config \


와 같이 줬는데 mysqlnd로 옵션을 바꿔 설치하니 이상없이 동작을 하게 되었다.


하루종일 이 문제로 구글링 하고 디버깅 했는데 결국 해결을 하게 되어 한시름 놓을 수 있게 되었다.


신고

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
작업 서버에서 잘 되던 쿼리가 에러가 떨어졌다.
에러 코드 내용...

ERROR 1030 (HY000): Got error 28 from storage engine

1030 에러코드를 메뉴얼로 찾아보니 별다른 내용도 없고, 위 메시지랑 같은 이야기만... ^^;;

Error: 1030 SQLSTATE: HY000 (ER_GET_ERRNO)

Message: Got error %d from storage engine


그래서 사내 DBA분에게 물어보고 확인해 본 결과 28 에러코드는 다음과 같은 방법으로 찾는 것이라고 한다.

[xxxxxx bin]# ./perror 28
OS error code  28:  No space left on device

mysql이 설치된 디렉토리의 bin 디렉토리에서 perror라는 바이너리 파일을 실행하면 관련된 내용을 리턴해 준다.
위 내용은 디스크 공간이 부족하다는 말!!!

그래서 df -h로 해당 공간 확인하고 tmp 공간이 부족한 것을 확인한 다음, /tmp에서 $MYSQL_HOME/data/tmp로 변경을 해 준 후 mysql을 재시작 했더니 문제가 해결되었다.

신고

'Server > DB' 카테고리의 다른 글

MySQL Replication  (0) 2013.05.15
MySQL Erro Code 28이 리턴되는 경우  (2) 2009.04.08
MySQL의 백업 및 복구  (2) 2008.12.15
MySQL에서 대소문자 구별해서 쿼리하기  (0) 2007.05.15
Z와 S의 차이...  (2) 2007.02.14
MySQL에서 변수의 사용...  (2) 2006.12.18

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 저도 같은 에러로 고생하다 우연찮게 님의 글을 보고 해결했습니다...너무 너무 x 10000000 감사합니다...단점투성이인 인터넷의 장점이 이런거군요...님에게 신의가호가 있길 진심으로 기원합니다...하시는일 잘되시고 부자되시고 건강하시고 오래오래 사세요....제 블로그는 http://blog.naver.com/sdisys 입니다...인연이 된다면 소주한잔 ^^...행복하세요!!
secret
사용자 삽입 이미지

오늘 따라 이 메시지를 자주 보네...
한 몇일 전부터 나타나기 시작하는 거 같더니...
아무래도 계속되는 Request에... 서버가 지칠때가 된건가...

그리고 라이브에 버그가 있는 듯...
라이브가 밤새 살아 있는 상태로 FF를 켜 놓고 가니 컴터 메모리 100% 차지 -.-;;
2.5G 메모리인데 -.-;;

라이브가 죽어서 위와 같은 메시지가 나타난 상태로 컴터 켜 놓고 가면... 메모리 정상 -.-;;

라이브좀 수정해 주삼!!! 그리고 서버 좀 늘려주삼!!!
신고

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  4개가 달렸습니다.
  1. 저도 요즘따라 자주 저런 메시지를 보게 되네요. 특히 라이브 쪽은 계속 나오고 있고... 이게 사람이 많아서 그런건지, 버그인지 잘 모르겠습니다.
  2. 디비서버 쪽에 옵티마이저 관련된 로직에 문제가 있어서 요즘 그렇습니다 ㅠㅠ
    빨리 해결 하도록 할겠습니다 !!
secret
사용자 삽입 이미지

에러네...
에러도 Live ^^
신고

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
오늘 티스토리 베타 오픈과 함께...
1인이 최대 운영할 수 있는 블로그의 숫자가 5개로 늘어났다.
그래서 가지고 있는 사진 정리 겸... 포토로그 식으로 블로그를 하나 더 개설했다.
일단 2개의 글을 올려 두었는데...
eolin.com은 발행만 하면 알아서 글이 올라가는데...
올블은 '글 수집하기'를 눌러줘야만 한다.
그냥 아무 생각 없이 두개의 글 제목을 동일하게 해 주었더니...
올블에서 글을 수집하지 못하는 거다...
"이미 모두 수집되어 있어서, 더이상 수집 할 글이 없습니다."
흠... 난감하군...
제목이라도 한번 바꿔봐야겠다... ^^

cf) 지금 제목을 1, 2 식으로 바꿔 보니, 제대로 수집이 되네.. ㅎㅎ
수집을 제목 기준으로 하다니... 정말 난감한 순간이군... -.-;;
신고

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  4개가 달렸습니다.
  1. 스팸, 펌, 그리고 중복 글 때문에 몇가지 조건을 충족한 상태에서 제목이 같을 경우에 수집이 안되는 경우가 있을 수 있습니다. 관련한 스팸이 워낙 많아서 취한 조취이니 만큼 이해해주셨으면 감사하겠습니다. 꾸벅(_ _)(^ ^);;
  2. ㅎㅎ
    블로그 좋아하시네용~
secret