개발용 컴퓨터 윈도우10에 xampp 를 설치했습니다.
기본 설치 그대로 놔두고 사용하고 있는데 느린것 같아요.
컴퓨터 사양은 메모리는 16기가,cpu는.. i5 컴알못이라 -_-;; 아래 스크린샷 참고 해주세요. ssd..
지금 사용하고 설정입니다. : my.ini
개발용 컴퓨터 윈도우10에 xampp 를 설치했습니다.
기본 설치 그대로 놔두고 사용하고 있는데 느린것 같아요.
컴퓨터 사양은 메모리는 16기가,cpu는.. i5 컴알못이라 -_-;; 아래 스크린샷 참고 해주세요. ssd..
지금 사용하고 설정입니다. : my.ini
첨부 |
---|
i5-4690K라면 필요에 따라 800MHz부터 3.9GHz까지 왔다갔다합니다. 오버클럭하면 높은 쪽으로 고정할 수도 있지만 그렇지 않을 수도 있고요... 부하가 높을 때 어디까지 올라가는지 확인하지 않고 스샷만으로는 저전력 모드인지 아닌지 알 수 없을 것 같아요.
모든 테이블을 InnoDB로 사용하신다는 가정 하에... (만약 MyISAM을 사용하신다면 그것부터 해결하세요.)
key_buffer = 이건 MyISAM에서는 그야말로 핵심 설정이지만, InnoDB에서는 건드릴 필요 없습니다.
max_allowed_packet = 16M 정도로 늘려주세요. 이게 너무 작으면 대량의 데이터를 한꺼번에 인서트하는 서드파티 자료가 에러를 뿜기도 합니다.
innodb_buffer_pool_size = 이게 제일 중요합니다. DB 전체 용량과 같거나 조금 더 많으면 좋습니다. 단, 서버 전체의 RAM 사용량을 고려해야 하므로 무작정 키울 수는 없고, RAM 16G짜리 PC에 다른 프로그램과 함께 돌린다면 1~2G 정도는 괜찮을 것 같네요. 대용량 DB를 굴리는 사이트에서는 이 설정이 수십~수백기가씩 되기도 하죠.
innodb_log_file_size = 이것도 최소 256M 정도는 되어야 합니다. 단, 이 설정을 바꾼 후에는 1) 우선 DB를 안전하게 종료한 후 2) C:/wamp/mysql/data 폴더에서 ib_logfile로 시작하는 로그파일 2~3개를 찾아 삭제하고 3) DB를 재시작해야 합니다. 이 과정을 거치지 않으면 에러가 나요.
innodb_log_buffer_size = 위에서 설정한 innodb_log_file_size 값의 1/4~1/2 정도 되도록 합니다.
올려주신 파일에는 없는 것 같지만, max_heap_table_size = 64M, tmp_table_size = 64M 정도로 설정해 주면 복잡한 조인과 정렬이 들어가는 위젯들도 숨통이 좀 트입니다.
중요한거 아니지만 테이블 구분자가 xe_ 이긴 하지만 라이믹스입니다.
아래 스크린샷을 보시면 table 종류가 모두 MyISAM 으로 되어 있는것 부터 어떻게든 처리를해야되는군요.
ALTER TABLE 테이블명 ENGINE=InnoDB;
(모든 테이블에 반복)
라이믹스 files/config/config.php에서도 DB engine을 innodb(소문자)로 바꿔주세요.
기진곰 님은 아시겠지만 혹시 모르시는 분들을 위해 테이블 엔진 일괄 변경하는 방법 남겨둡니다.
작업 중인 외부 문서가 있어서 그냥 해당 php 파일에 추가해서 했습니다.
참고만 해주시고 // 경로 수정 필요 주의 해주세요.
<?php ini_set('max_execution_time', 600); define('__XE__', TRUE); define('__ZBXE__', TRUE); require_once('../../../config/config.inc.php'); // 경로 수정 필요 $oContext = &Context::getInstance(); $oContext->init(); $oDB = DB::getInstance(); $sql = "show tables"; $query = $oDB->_query($sql); $result = $oDB->_fetch($query); for($i=0;$i<count($result);$i++) { $table_name=$result[$i]->Tables_in_rhymix; // 수정 필요 디비가 abcd 면 .. Tables_in_rhymix 를 Tables_in_abcd 로 변경 $alter_sql ="ALTER TABLE ".$table_name." ENGINE=InnoDB"; $oDB->_query($alter_sql); } ?>
서버 이전 작업할때 작업하신 분이 innoDB로 해주셨던 것으로 기억됩니다.
그런데 지금
'db_type' => 'mysql',
'db_port' => '3306',
'db_hostname' => ':/var/run/mysqld/mysqld.sock',
이렇게 되어 있습니다.
지금 문제를 고쳐야 한다면 어떻게 해야 할까요?
13줄에서 DB명에 따른 수정이 필요없도록 하려면
$table_name = implode(get_object_vars($result[$i]));
이렇게 하시면 됩니다. 컬럼 이름과 상관없이 컬럼 1개뿐이니까요^^
우선 db_type을 2군데 모두 mysql_innodb 또는 mysqli_innodb로 바꾸시고요.
(근데 왜 mysql로 되어 있을까요... PHP 5.5 이상이라면 mysqli를 쓰시는 게 좋은데...)
아래의 구름이님 팁을 사용해서 MyISAM 테이블을 InnoDB로 일괄 변환해 주세요.
서드파티 자료 중 트랜잭션이나 prepared statement를 사용하면 문제를 일으키는 것이 가끔 있습니다. 만약 mysqli_innodb로 변경후 문제가 생긴다면 db.config.php에서 use_prepared_statements 설정을 N으로 바꿔주시면 됩니다. 그래도 안된다면 mysql_innodb로 하시고요.
phpinfo상으로는 문제가 보이지 않네요. 게다가 우분투에서 패키지 설치하셨으니 기본으로 다 연동되어 있어야 하는데... 서버 세팅이 아니라 특정 서드파티 자료가 문제인지도 모르겠습니다. XE에서 제공하는 DB 클래스를 사용하지 않고 mysql_query 함수를 직접 쓰는 애드온이 있다거나...
일단은 계속 mysql_innodb로 쓰세요. 혹시 나중에 PHP 7로 업그레이드하신다면 그 때 mysqli_innodb로 변경하셔도 됩니다.