database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31136 게시물 읽기
No. 31136
Too many connection 에러 문의 (DB튜닝) 문제입니다. ㅠㅠ
작성자
mysql 초보
작성일
2017-11-28 16:12ⓒ
2017-11-28 16:23ⓜ
조회수
4,116

현재 옥타코어에

메모리 16G의

스왑메모리가 32G 인 서버를 돌리고있습니다.

 

 

오늘 처음으로 동시접속자 300명이 붙었는데 Too Many cursor 가 떴습니다.

동일한 사양으로 운영중인 서버에는 그 이상 동시접속자가 있어도 위와 같은 에러가 안나타는데요

뭐가 문제가 있을까요?

 

my.cnf 파일에

max_conncection 값은 4096으로 주었고,

wait_timeout 시간을 30으로 주었습니다.

 

show variables; 를 해보면 내용은 다음과 같을때,

변경해줘야할 값이 또 있을까요??

 

인터넷을 뒤져보니,

cache값도 뭔가 변경시켜줘야 할것 같고,

buffer_size 도 늘리라고 그러고....

 

내일은 500명 이상

최대 1000명 정도 동시접속이 생길수도 있을거 같은데

피가 말라 죽겠습니다.

 

염치불구하지만, 한번만 봐주시면 안될까요? ㅠㅠ

 

 

 

| Variable_name | Value |

 

+-----------------------------------------+-------------------------------------------------------------------------------------------+

 

| auto_increment_increment | 1 |

 

| auto_increment_offset | 1 |

 

| autocommit | ON |

 

| automatic_sp_privileges | ON |

 

| back_log | 50 |

 

| basedir | /usr/local/mysql-5.1.46/ |

 

| big_tables | OFF |

 

| binlog_cache_size | 32768 |

 

| binlog_direct_non_transactional_updates | OFF |

 

| binlog_format | MIXED |

 

| bulk_insert_buffer_size | 8388608 |

 

| character_set_client | euckr |

 

| character_set_connection | euckr |

 

| character_set_database | euckr |

 

| character_set_filesystem | binary |

 

| character_set_results | euckr |

 

| character_set_server | euckr |

 

| character_set_system | utf8 |

 

| character_sets_dir | /usr/local/mysql-5.1.46/share/mysql/charsets/ |

 

| collation_connection | euckr_korean_ci |

 

| collation_database | euckr_korean_ci |

 

| collation_server | euckr_korean_ci |

 

| completion_type | 0 |

 

| concurrent_insert | 1 |

 

| connect_timeout | 10 |

 

| datadir | /var/lib/mysql/ |

 

| date_format | %Y-%m-%d |

 

| datetime_format | %Y-%m-%d %H:%i:%s |

 

| default_week_format | 0 |

 

| delay_key_write | ON |

 

| delayed_insert_limit | 100 |

 

| delayed_insert_timeout | 300 |

 

| delayed_queue_size | 1000 |

 

| div_precision_increment | 4 |

 

| engine_condition_pushdown | ON |

 

| error_count | 0 |

 

| event_scheduler | OFF |

 

| expire_logs_days | 0 |

 

| flush | OFF |

 

| flush_time | 0 |

 

| foreign_key_checks | ON |

 

| ft_boolean_syntax | + -><()~*:""&| |

 

| ft_max_word_len | 84 |

 

| ft_min_word_len | 4 |

 

| ft_query_expansion_limit | 20 |

 

| ft_stopword_file | (built-in) |

 

| general_log | OFF |

 

| general_log_file | /var/lib/mysql/localhost.log |

 

| group_concat_max_len | 1024 |

 

| have_community_features | YES |

 

| have_compress | YES |

 

| have_crypt | YES |

 

| have_csv | YES |

 

| have_dynamic_loading | YES |

 

| have_geometry | YES |

 

| have_innodb | NO |

 

| have_ndbcluster | NO |

 

| have_openssl | NO |

 

| have_partitioning | NO |

 

| have_query_cache | YES |

 

| have_rtree_keys | YES |

 

| have_ssl | NO |

 

| have_symlink | YES |

 

| hostname | localhost.localdomain |

 

| identity | 0 |

 

| ignore_builtin_innodb | OFF |

 

| init_connect | SET NAMES euckr |

 

| init_file | |

 

| init_slave | |

 

| insert_id | 0 |

 

| interactive_timeout | 28800 |

 

| join_buffer_size | 131072 |

 

| keep_files_on_create | OFF |

 

| key_buffer_size | 268435456 |

 

| key_cache_age_threshold | 300 |

 

| key_cache_block_size | 1024 |

 

| key_cache_division_limit | 100 |

 

| language | /usr/local/mysql-5.1.46/share/mysql/english/ |

 

| large_files_support | ON |

 

| large_page_size | 0 |

 

| large_pages | OFF |

 

| last_insert_id | 0 |

 

| lc_time_names | en_US |

 

| license | GPL |

 

| local_infile | ON |

 

| locked_in_memory | OFF |

 

| log | OFF |

 

| log_bin | ON |

 

| log_bin_trust_function_creators | OFF |

 

| log_bin_trust_routine_creators | OFF |

 

| log_error | /var/lib/mysql/localhost.localdomain.err |

 

| log_output | FILE |

 

| log_queries_not_using_indexes | OFF |

 

| log_slave_updates | OFF |

 

| log_slow_queries | ON |

 

| log_warnings | 1 |

 

| long_query_time | 3.000000 |

 

| low_priority_updates | OFF |

 

| lower_case_file_system | OFF |

 

| lower_case_table_names | 0 |

 

| max_allowed_packet | 1048576 |

 

| max_binlog_cache_size | 18446744073709547520 |

 

| max_binlog_size | 1073741824 |

 

| max_connect_errors | 10 |

 

| max_connections | 4096 |

 

| max_delayed_threads | 20 |

 

| max_error_count | 64 |

 

| max_heap_table_size | 16777216 |

 

| max_insert_delayed_threads | 20 |

 

| max_join_size | 18446744073709551615 |

 

| max_length_for_sort_data | 1024 |

 

| max_prepared_stmt_count | 16382 |

 

| max_relay_log_size | 0 |

 

| max_seeks_for_key | 18446744073709551615 |

 

| max_sort_length | 1024 |

 

| max_sp_recursion_depth | 0 |

 

| max_tmp_tables | 32 |

 

| max_user_connections | 0 |

 

| max_write_lock_count | 18446744073709551615 |

 

| min_examined_row_limit | 0 |

 

| multi_range_count | 256 |

 

| myisam_data_pointer_size | 6 |

 

| myisam_max_sort_file_size | 9223372036853727232 |

 

| myisam_mmap_size | 18446744073709551615 |

 

| myisam_recover_options | OFF |

 

| myisam_repair_threads | 1 |

 

| myisam_sort_buffer_size | 16777216 |

 

| myisam_stats_method | nulls_unequal |

 

| myisam_use_mmap | OFF |

 

| net_buffer_length | 8192 |

 

| net_read_timeout | 30 |

 

| net_retry_count | 10 |

 

| net_write_timeout | 60 |

 

| new | OFF |

 

| old | OFF |

 

| old_alter_table | OFF |

 

| old_passwords | OFF |

 

| open_files_limit | 20480 |

 

| optimizer_prune_level | 1 |

 

| optimizer_search_depth | 62 |

 

| optimizer_switch | index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on |

 

| pid_file | /var/lib/mysql/localhost.localdomain.pid |

 

| plugin_dir | /usr/local/mysql-5.1.46/lib/mysql/plugin |

 

| port | 3306 |

 

| preload_buffer_size | 32768 |

 

| profiling | OFF |

 

| profiling_history_size | 15 |

 

| protocol_version | 10 |

 

| pseudo_thread_id | 176 |

 

| query_alloc_block_size | 8192 |

 

| query_cache_limit | 1048576 |

 

| query_cache_min_res_unit | 4096 |

 

| query_cache_size | 0 |

 

| query_cache_type | ON |

 

| query_cache_wlock_invalidate | OFF |

 

| query_prealloc_size | 8192 |

 

| rand_seed1 | |

 

| rand_seed2 | |

 

| range_alloc_block_size | 4096 |

 

| read_buffer_size | 2097152 |

 

| read_only | OFF |

 

| read_rnd_buffer_size | 8388608 |

 

| relay_log | |

 

| relay_log_index | |

 

| relay_log_info_file | relay-log.info |

 

| relay_log_purge | ON |

 

| relay_log_space_limit | 0 |

 

| report_host | |

 

| report_password | |

 

| report_port | 3306 |

 

| report_user | |

 

| rpl_recovery_rank | 0 |

 

| secure_auth | OFF |

 

| secure_file_priv | |

 

| server_id | 1 |

 

| skip_external_locking | ON |

 

| skip_name_resolve | ON |

 

| skip_networking | OFF |

 

| skip_show_database | OFF |

 

| slave_compressed_protocol | OFF |

 

| slave_exec_mode | STRICT |

 

| slave_load_tmpdir | /tmp |

 

| slave_net_timeout | 3600 |

 

| slave_skip_errors | OFF |

 

| slave_transaction_retries | 10 |

 

| slow_launch_time | 2 |

 

| slow_query_log | ON |

 

| slow_query_log_file | /var/lib/mysql/long_query_log |

 

| socket | /tmp/mysql.sock |

 

| sort_buffer_size | 2097152 |

 

| sql_auto_is_null | ON |

 

| sql_big_selects | ON |

 

| sql_big_tables | OFF |

 

| sql_buffer_result | OFF |

 

| sql_log_bin | ON |

 

| sql_log_off | OFF |

 

| sql_log_update | ON |

 

| sql_low_priority_updates | OFF |

 

| sql_max_join_size | 18446744073709551615 |

 

| sql_mode | |

 

| sql_notes | ON |

 

| sql_quote_show_create | ON |

 

| sql_safe_updates | OFF |

 

| sql_select_limit | 18446744073709551615 |

 

| sql_slave_skip_counter | |

 

| sql_warnings | OFF |

 

| ssl_ca | |

 

| ssl_capath | |

 

| ssl_cert | |

 

| ssl_cipher | |

 

| ssl_key | |

 

| storage_engine | MyISAM |

 

| sync_binlog | 0 |

 

| sync_frm | ON |

 

| system_time_zone | KST |

 

| table_definition_cache | 256 |

 

| table_lock_wait_timeout | 50 |

 

| table_open_cache | 512 |

 

| table_type | MyISAM |

 

| thread_cache_size | 0 |

 

| thread_handling | one-thread-per-connection |

 

| thread_stack | 262144 |

 

| time_format | %H:%i:%s |

 

| time_zone | SYSTEM |

 

| timed_mutexes | OFF |

 

| timestamp | 1511850914 |

 

| tmp_table_size | 16777216 |

 

| tmpdir | /tmp |

 

| transaction_alloc_block_size | 8192 |

 

| transaction_prealloc_size | 4096 |

 

| tx_isolation | REPEATABLE-READ |

 

| unique_checks | ON |

 

| updatable_views_with_limit | YES |

 

| version | 5.1.46-log |

 

| version_comment | Source distribution |

 

| version_compile_machine | x86_64 |

 

| version_compile_os | unknown-linux-gnu |

 

| wait_timeout | 28800 |

 

| warning_count | 0 |

 

+-----------------------------------------+-------------------------------------------------------------------------------------------+

 

 

 

 

마지막으로 show status like '%connect%'; 를 입력하면

Connections의 수치가 계속해서 올라가는데 이것은 이상이 없는거가요?

 

mysql> show status like '%connect%';

+----------------------+--------+

| Variable_name | Value |

+----------------------+--------+

| Aborted_connects | 195 |

| Connections | 193531 |

| Max_used_connections | 11 |

| Threads_connected | 1 |

+----------------------+--------+

 

이 글에 대한 댓글이 총 3건 있습니다.

 yo`

1. Too Many cursor 가 MySQL 서버 오류 메세지 인가요? 첨들어보는데.. 검색해도 안나오네요 프로그래밍 단에서 나오는게 아닌지 확인해보셔야 할듯요.. ( too many connection 인가요? cusror 인가요? )

 

2. wait_timeout = 이 28800 으로 되어 있네요?

 

3. Connections 는 누적되는 수치고 Max_used_connections 는 11 이라 동접수 의 문제는 아닌것 같습니다.

 

백록화(백록화)님이 2017-11-28 21:28에 작성한 댓글입니다.

Max_used_connections 값을 봤을때 

DB단 문제는 아닌 것으로 보입니다.

해당 DB에 접속하는 프로그램(웹 서비스일 경우 WAS)의

설정을 확인해 보셔야 할 것으로 보입니다.

박인호(paerae)님이 2017-11-29 09:09에 작성한 댓글입니다.

 답변 정말 감사합니다. 백록화님 

Too many Connections 가 맞습니다. 제가 헷갈렸습니다. 

wait_timeout을 300으로 준다고 했었는데 반영이 안됐나보네요 ㅠㅠ 

 

박인호님 답변 감사합니다. 

한가할때(?)의 Max_used_connections 값이라서 11로 찍혀있었나봅니다. 

부하가 걸릴때 다시 확인해보겠습니다. 

 

================================================================

Max_connections 을 4096, wait_timeout을 30초로 주고서 

DB를 뻗어버리게끔 스트레스 테스트를 해보려고 합니다. 

 

저정도 서버 사양이면 저 능력치를 소화할수 있을까요?? 

 

혹시 인터넷에 떠도는 방법 말고, 또 좋은 툴이나, 방법이 있으면  알려주시면 안될까요?? 


너무 심각하게.. 오늘도 DB 뻗어버리면 사표쓰게 생겼습니다.. ㅠㅠ 

글작성자입니다님이 2017-11-29 10:52에 작성한 댓글입니다.
이 댓글은 2017-11-29 10:53에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
31139부천 단기 속성 과외 해주실분
황홍선
2017-12-21
3659
31138오라클의 연결문자 || mysql에선 어떻게 쓰나요ㅜㅠ [1]
망고
2017-12-20
3859
31137부탁할까하구요
ahrakfma
2017-12-07
3662
31136Too many connection 에러 문의 (DB튜닝) 문제입니다. ㅠㅠ [3]
mysql 초보
2017-11-28
4116
31135조회된 데이타 열 번호 질문입니다. [1]
이기자
2017-11-28
3507
31134'1'값이 들어있는 3개의 로우를 '1,1,1'로 표현(1개로우) 방법은? [2]
권순환
2017-11-23
3717
31133계층별 조직 코드 오류값 찾아내는 방법 [2]
김씨
2017-11-20
3853
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.055초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다