
내 서버에는 7개의 데이터베이스가 있습니다. 우리 서버에는 512MB의 RAM이 있으며 오늘 저녁에 2GB로 업그레이드할 예정이며 2.4개의 단일 프로세서가 있습니다.
연결 제한을 초과했다는 오류가 발생했습니다. RAM을 늘리면 연결 수를 늘려도 괜찮나요? 현재는 200개로 설정되어 있지만 JOIN 등을 고려하면 한 페이지에 3~4개의 데이터베이스를 연결할 수 있다.
우리는 단순한 조직을 위해 너무 많은 데이터베이스를 설정했습니다. 모든 데이터베이스에는 총 약 250-300개의 테이블이 있습니다.
어떤 조언이라도 감사하겠습니다 :)
업데이트
알고보니 생각보다 인연이 많네요....
2GB RAM과 2.4 단일 코어를 사용하면 50명의 사용자 연결이 정확합니까, 아니면 이를 늘려야 합니까?
[mysqld]
safe-show-database
skip-locking
safe-show-database
interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000
key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M
query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1
tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1
답변1
연결을 크게 늘릴 수 있어야 합니다. 그러나 스레드당 메모리 사용량을 적절하게 조정하지 않으면 MySQL의 메모리 부족 위험이 있습니다. MySQL의 메모리 부족은 재앙적인 상황이 될 수 있으므로 피하는 것이 가장 좋습니다.
적절하게 조정하지 않으면 어떤 일이 발생하는지에 대한 예:
메모리 부족으로 인해 MySQL이 계속 다시 시작됩니다.
제가 제공한 몇 가지 초기 튜닝 권장 사항은 다음과 같습니다.
연결에 제한이 없도록 Mysql에서 my.cnf를 어떻게 설정합니까?
링크는InnoDB 메모리 사용량InnoDB 메모리 사용량을 계산하는 공식이 포함되어 있으며, 이를 스프레드시트에 연결하여 스레드별로 메모리 사용량을 계산할 수 있습니다.
여기에 관한 추가 정보가 있습니다.MySQL 서버 메모리 사용량.
궁극적으로 목표는 구성을 기반으로 스레드 메모리당 최대 사용량을 계산하는 것입니다. 계산이 완료되면 최대 연결을 적절한 값으로 설정할 수 있습니다.
답변2
1GB 시스템에서는 문제 없이 정기적으로 max_connections를 750으로 설정합니다.
답변3
PHP를 사용하는 경우 일반적으로 /etc/php.ini에서 php 구성 파일을 편집하고 지속성을 OFF로 변경합니다.
[마이SQL] ; 영구 링크를 허용하거나 방지합니다. mysql.allow_persist = 꺼짐
그게 다야. 아파치를 다시 시작하십시오.