2017-12-31 1 views
0

だから私は本当にmariadbの設定ファイルを乱してしまったと思います。私はapache2とmysql専用のサーバーを使用しています。サーバーの応答時間がmysqlがクエリに応答するのに時間がかかり過ぎるか、コード自体が原因で発生するかどうかはわかりません。私はすでにいくつかの設定の発電機を試みたが、私は彼らが働くように感じることはありません。ここでは、専用サーバの仕様です:MariaDBの設定の最適化

Intel C2750 32 GB RAM 256 GB SSD

# 
# These groups are read by MariaDB server. 
# Use it for options that only the server (but not clients) should see 
# 
# See the examples of server my.cnf files in /usr/share/mysql/ 
# 

# this is read by the standalone daemon and embedded servers 
[server] 

# this is only for the mysqld standalone daemon 
[mysqld] 

# 
# * Basic Settings 
# 
user  = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket  = /var/run/mysqld/mysqld.sock 
port  = 3306 
basedir  = /usr 
datadir  = /var/lib/mysql 
tmpdir  = /tmp 
lc-messages-dir = /usr/share/mysql 
skip-external-locking 
# Skip reverse DNS lookup of clients 
skip-name-resolve 
# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
# bind-address  = 127.0.0.1 

# 
# * Fine Tuning 
# 
key_buffer_size  = 5048M 
key-buffer-size  = 32M 
max_allowed_packet = 2024M 
max-allowed-packet = 16M 
max-connect-errors = 1000000 
thread_stack  = 1024K 
thread_cache_size  = 30 
# This replaces the startup script and checks MyISAM tables if needed 
# the first time they are touched 
myisam_recover_options = BACKUP 
max_connections  = 500 
table_cache   = 100 
table_open_cache = 3000 
table_definition_cache = 9000 
join_buffer_size = 300K 
performance_schema = ON 

#thread_concurrency  = 10 
max_user_connections = 455 
# 
# * Query Cache Configuration 
# 
query_cache_limit = 1048M 
query_cache_size = 0 
query_cache_type = 0 

slow-query-log = 1 
slow-query-log-file = /var/lib/mysql/mysql-slow.log 
long_query_time = 1 
# 
# * Logging and Replication 
# 
# Both location gets rotated by the cronjob. 
# Be aware that this log type is a performance killer. 
# As of 5.1 you can enable the log at runtime! 
#general_log_file  = /var/log/mysql/mysql.log 
#general_log    = 1 
# 
# Error log - should be very few entries. 
# 
log_error = /var/log/mysql/error.log 
# 
# Enable the slow query log to see queries with especially long duration 
#slow_query_log_file = /var/log/mysql/mariadb-slow.log 
#long_query_time = 10 
#log_slow_rate_limit = 1000 
#log_slow_verbosity = query_plan 
#log-queries-not-using-indexes 
# 
# The following can be used as easy to replay backup logs or for replication. 
# note: if you are setting up a replication slave, see README.Debian about 
#  other settings you may need to change. 
#server-id  = 1 
#log_bin   = /var/log/mysql/mysql-bin.log 
expire_logs_days = 10 
max_binlog_size = 100M 
#binlog_do_db  = include_database_name 
#binlog_ignore_db = exclude_database_name 

# 
# * InnoDB 
# 
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. 
# Read the manual for more InnoDB related options. There are many! 
innodb_buffer_pool_size = 15G 
#innodb_s_lock_spin_rounds = 120 
#innodb_thread_concurrency = 0 
innodb_log_file_size = 3G 
innodb_buffer_pool_instances = 25 

tmp-table-size     = 32M 
max-heap-table-size   = 32M 
query-cache-type    = 0 
query-cache-size    = 0 
max-connections    = 500 
thread-cache-size    = 50 
open-files-limit    = 65535 
table-definition-cache   = 4096 
table-open-cache    = 100 
innodb-flush-method   = O_DIRECT 
innodb-log-files-in-group  = 2 
innodb-log-file-size   = 512M 
innodb-flush-log-at-trx-commit = 2 
innodb-file-per-table   = 1 
innodb-buffer-pool-size  = 26G 

#innodb_buffer_size = 256M 
# 
# * Security Features 
# 
# Read the manual, too, if you want chroot! 
# chroot = /var/lib/mysql/ 
# 
# For generating SSL certificates you can use for example the GUI tool "tinyca". 
# 
# ssl-ca=/etc/mysql/cacert.pem 
# ssl-cert=/etc/mysql/server-cert.pem 
# ssl-key=/etc/mysql/server-key.pem 
# 
# Accept only connections using the latest and most secure TLS protocol version. 
# ..when MariaDB is compiled with OpenSSL: 
# ssl-cipher=TLSv1.2 
# ..when MariaDB is compiled with YaSSL (default in Debian): 
# ssl=on 

# 
# * Character sets 
# 
# MySQL/MariaDB default is Latin1, but in Debian we rather default to the full 
# utf8 4-byte character set. See also client.cnf 
# 
character-set-server = utf8mb4 
collation-server  = utf8mb4_general_ci 

# 
# * Unix socket authentication plugin is built-in since 10.0.22-6 
# 
# Needed so the root database user can authenticate without a password but 
# only when running as the unix root user. 
# 
# Also available for other users if required. 
# See https://mariadb.com/kb/en/unix_socket-authentication-plugin/ 

# this is only for embedded server 
[embedded] 

# This group is only read by MariaDB servers, not by MySQL. 
# If you use the same .cnf file for MySQL and MariaDB, 
# you can put MariaDB-only options here 
[mariadb] 

# This group is only read by MariaDB-10.1 servers. 
# If you use the same .cnf file for MariaDB of different versions, 
# use this group for options that older servers don't understand 
[mariadb-10.1] 

答えて

0

は、あなたが複数回オプションを指定した場合、そのオプションのための唯一の最後設定が有効になることに注意してください。かなりの反復があり、実際にはどの値が実際に効果があるのか​​混乱するだけです。

  • ソート重複を(私は[mysqld]セクション内の行を意味する)を見つけるためにあなたのmy.cnf アルファベット順の行:

    は、私はあなたが次の操作を行い示唆しています。

  • 実際にどの値を有効にするかを選択し、同じオプションの余計な設定で他の行を削​​除します。
  • オプションをデフォルトに設定したオプション行を削除します。
  • デフォルト以外の値を選択する特定の理由がないオプション行を削除します。

私はあなたが持っているがわかります

innodb-buffer-pool-size  = 26G 

これはあなたの32GのRAMの81%です。バッファプールが少なくとも10%の余分なものを使用すると仮定すると、実際には28.6Gを使用します。したがって、MySQL、Apache、その他のプロセス、およびOS自体を含め、サーバー上の他のすべてのRAMのニーズは3.4Gです。

MySQLには、バッファプール以外にも、特に接続ごとにRAMの用途があり、最大500の接続を許可します。

また、Apacheを同じサーバー上で実行します。もちろん、Apacheで実行されるすべてのWebアプリケーションも実行できます。彼らはそれぞれRAMも使用します。アプリケーションのコードに完全に依存しているため、どれくらいの量を予測することはできません。 Apacheは複数の同時リクエストを実行できるため、Webアプリケーションの処理要求のコピーが数十または数百になることがあります。

私は、あまりにも多くのRAMを使用していて、サーバーがディスク上のスワップ領域を使用するようにしているのだろうかと思います。これは、ディスク(SSDでも可)がRAMよりも桁違いに遅いため、あらゆるサーバーのパフォーマンスを低下させます。

topまたはfreeまたはvmstatでメモリの使用を監視する必要があります。 RAMが不足していて、スワップを使用するシステムがある場合は、RAMの割り当てを減らすか、接続数やApache要求数に制限を設けてください。より多くのRAMをインストールしたり、Apacheを第2の専用サーバーに移行することもできます。

+0

@eptun最新のmy.cnf/ini、php.ini(使用されている場合) のテキスト結果: A)SHOW GLOBAL STATUS; B)グローバル変数を表示します。 C)ショーエンジンINNODB STATUS; ; D)SELECT name、count FROM information_schema。innodb_metrics ORDER BY name; 利用可能な場合は、非常に便利な情報( )が含まれます。htopまたは最もアクティブなアプリケーションの場合は\t F)ulimit -a linux/unixの制限リストの場合は、 G)MySQLTuner.com全体のレポート –