물어보기서버관련

개발용 컴퓨터 윈도우10에 xampp 를 설치했습니다.

기본 설치 그대로 놔두고 사용하고 있는데 느린것 같아요.

컴퓨터 사양은 메모리는 16기가,cpu는.. i5 컴알못이라 -_-;; 아래 스크린샷 참고 해주세요. ssd..

지금 사용하고 설정입니다. : my.ini

 

 

 

mypc.png

Atachment
첨부 2
  • ?
    천월 2017.10.26 10:23:11
    혹시나 말씀드리는건데 윈도우 설정에서 전원옵션은 고성능말고 저전력으로 두신게 아닌가요?
  • profile
    구름이 2017.10.26 10:24:21
    고성능으로 해둬야 되나요? ㅎㄷㄷ
  • profile
    구름이 2017.10.26 10:25:21
    그런건 보이질 않아요..
  • ?
    천월 2017.10.26 10:27:40
    저전력으로 컴퓨터가 도니까 시피유가 제성능을 못내고 1기가 헤르츠를 보여주고 있잖아요 퍼포먼스가 제대로 나올려면 고성능으로 두셔야합니다
  • profile
    기진곰 2017.10.26 10:37:16
    저건 그냥 별거 안 하고 있으니까 CPU가 절전하는 중 아닐까요? 수시로 방문자가 들어오는 서버가 아니라 글쓰신 분이 작업할 때만 사용하는 일반 PC니까요.
  • ?
    천월 2017.10.26 10:43:01
    확실히 그럴수도 있겠네요 그래도 데스크탑에 절전모드로 둔적이 거의없어서 오버해서 그런걸까요
  • profile
    기진곰 2017.10.26 10:53:11

    i5-4690K라면 필요에 따라 800MHz부터 3.9GHz까지 왔다갔다합니다. 오버클럭하면 높은 쪽으로 고정할 수도 있지만 그렇지 않을 수도 있고요... 부하가 높을 때 어디까지 올라가는지 확인하지 않고 스샷만으로는 저전력 모드인지 아닌지 알 수 없을 것 같아요.

  • profile
    기진곰 2017.10.26 10:35:53

    모든 테이블을 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 정도로 설정해 주면 복잡한 조인과 정렬이 들어가는 위젯들도 숨통이 좀 트입니다.

  • profile
    구름이 2017.10.26 10:46:27 Files첨부 (1)

    중요한거 아니지만 테이블 구분자가 xe_ 이긴 하지만 라이믹스입니다.

    아래 스크린샷을 보시면 table 종류가 모두 MyISAM 으로 되어 있는것 부터 어떻게든 처리를해야되는군요.

     

    dbtable.png

  • profile
    기진곰 2017.10.26 10:54:18

    ALTER TABLE 테이블명 ENGINE=InnoDB;
    (모든 테이블에 반복)

    라이믹스 files/config/config.php에서도 DB engine을 innodb(소문자)로 바꿔주세요.

  • profile
    구름이 2017.10.26 11:10:31
    답변 감사드립니다^^
  • profile
    웹지기 2017.10.26 11:40:11
    관련해서 저도 질문좀 드릴게요.
    저는 이것 보고 확인해 봤더니 InnoDB 와 MyISAM 가 섞여 있습니다.

    나중에 추가된 것들이 MyISAM 로 되어 있는 상황인데요.
    잘못되어 잇는건가요 ??
  • profile
    기진곰 2017.10.26 11:55:13
    XE files/config/db.config.php에서 db_type이 mysql_innodb 또는 mysqli_innodb로 되어 있어야 합니다. 그냥 mysql 또는 mysqli로 되어 있으면 각 모듈에서 새로 추가하는 테이블들은 MyISAM으로 생성됩니다. 예전에 일괄 변경하신 후에 테이블이 더 생긴 것 같네요.
  • profile
    웹지기 2017.10.26 11:57:05 Files첨부 (1)

    서버 이전 작업할때 작업하신 분이 innoDB로 해주셨던 것으로 기억됩니다.

    그런데 지금
    'db_type' => 'mysql',
    'db_port' => '3306',
    'db_hostname' => ':/var/run/mysqld/mysqld.sock',

    이렇게 되어 있습니다.

    지금 문제를 고쳐야 한다면 어떻게 해야 할까요?

     

     

    다운로드.png

  • profile
    기진곰 2017.10.26 12:06:04

    우선 db_type을 2군데 모두 mysql_innodb 또는 mysqli_innodb로 바꾸시고요.
    (근데 왜 mysql로 되어 있을까요... PHP 5.5 이상이라면 mysqli를 쓰시는 게 좋은데...)

    아래의 구름이님 팁을 사용해서 MyISAM 테이블을 InnoDB로 일괄 변환해 주세요.

  • profile
    웹지기 2017.10.26 12:08:11
    지금 상태에서mysqli_innodb 로 설정해도 문제가 되지 않는건가요? 그렇다면 이걸로 설정해 보려구요.
  • profile
    기진곰 2017.10.26 12:10:25

    서드파티 자료 중 트랜잭션이나 prepared statement를 사용하면 문제를 일으키는 것이 가끔 있습니다. 만약 mysqli_innodb로 변경후 문제가 생긴다면 db.config.php에서 use_prepared_statements 설정을 N으로 바꿔주시면 됩니다. 그래도 안된다면 mysql_innodb로 하시고요.

  • profile
    웹지기 2017.10.26 12:15:04
    우선 mysql_innodb 만 넣어봤는데
    사이트접속이 db 접속 오류가 나네요....
  • profile
    기진곰 2017.10.26 12:39:04
    보통 그거 바꾼다고 에러나지는 않는데요... 이상하네요 ㅜㅜ
  • profile
    웹지기 2017.10.26 12:48:40
    아.. 댓글을 잘못 달았네요.
    mysqli_innodb 로 해서 db 접속 에러가 나서

    mysql_innodb 해서 완료 했습니다. 감사합니다.
  • profile
    웹지기 2017.10.26 13:54:08
    혹시 php.ini 에 extension=mysqli.so 를 추가해야 하는건가요 ???
  • profile
    웹지기 2017.10.26 14:11:14
    /etc/php5/apache2/conf.d/20-mysqli.ini
    이파일에 들어가 있네요... extension=mysqli.so

    phpinfo에서 다 보이는거 보면 mysqli 사용 가능할 것 같은데 접속 에러가 나네요. 흠...
  • profile
    기진곰 2017.10.26 14:13:42
    서버 설정이 어딘가 꼬여있나 봅니다. mysql과 mysqli에서 사용하는 기본 소켓주소가 다르다거나... (phpinfo 자세히 보시면 나옵니다.)
  • profile
    웹지기 2017.10.26 14:15:16

    /phpinfo.php
    한번 봐주세요.. 저는 이상한점을 못찾겠어요...

  • profile
    기진곰 2017.10.26 14:30:17

    phpinfo상으로는 문제가 보이지 않네요. 게다가 우분투에서 패키지 설치하셨으니 기본으로 다 연동되어 있어야 하는데... 서버 세팅이 아니라 특정 서드파티 자료가 문제인지도 모르겠습니다. XE에서 제공하는 DB 클래스를 사용하지 않고 mysql_query 함수를 직접 쓰는 애드온이 있다거나...

    일단은 계속 mysql_innodb로 쓰세요. 혹시 나중에 PHP 7로 업그레이드하신다면 그 때 mysqli_innodb로 변경하셔도 됩니다.

  • profile
    웹지기 2017.10.26 14:32:33
    네. 간단히 설정만 바꿔서 되면 이번에 바꿔 보려고 했는데 다음 기회로 넘겨야 겠습니다. 이번에 문제가 되었다면 php7에서도 문제가 되겠군요. 참고하겠습니다.

    메인페이지에서 레이아웃에서 직접 쿼리한것 빼 보았으니 다른 서드파티 자료에서 사용는게 있을지도 모르겠네요.
  • profile
    구름이 2017.10.26 11:43:51

    기진곰 님은 아시겠지만 혹시 모르시는 분들을 위해 테이블 엔진 일괄 변경하는 방법 남겨둡니다.
    작업 중인 외부 문서가 있어서 그냥 해당 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);
    }
    ?>

     

  • profile
    기진곰 2017.10.26 12:02:49

    13줄에서 DB명에 따른 수정이 필요없도록 하려면
    $table_name = implode(get_object_vars($result[$i]));
    이렇게 하시면 됩니다. 컬럼 이름과 상관없이 컬럼 1개뿐이니까요^^


서버에 요청 중입니다. 잠시만 기다려 주십시오...