gpt4 book ai didi

mysql总是使用最大连接数

转载 作者:行者123 更新时间:2023-11-29 07:03:50 25 4
gpt4 key购买 nike

我有 4 核 CPU 和 32 GB RAM 的 LAMP 服务器。我们在上面运行一个大型网站。我的服务器现在有以下问题。

当我使用 Mysqlreport 工具监控 mysql 服务器时,我总是看到如下所示的连接使用情况。并且用户在网站中报告连接问题。

_

Connections _______________________________

Max used 251 of 250 %Max: 100.40 Total 748.71k 3.5/s

但是当我使用“show process list”命令时,它不会输出任何内容。我们正在为我们所有的数据库使用 MyISAM 引擎。

我的Mysql配置文件贴在下面:

######################

[mysqld]

max_connections = 250

set-variable=local-infile=0

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

skip-name-resolve

skip-bdb

wait_timeout = 60

thread_cache_size = 100

table_cache = 1024

key_buffer = 384M

log_slow_queries=/mysql-log/mysql-slow.log

query-cache-size=512M

query-cache-type=1

query_cache_limit=20M

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid
#

谁在使用我的Mysql连接池?我怎样才能找到它?

我还有一个问题。

Sometimes the Load average goes beyond 4-8 range. See below:

13:40:02 up 2 days, 10:39, 0 users, load average: 5.03, 1.68, 0.93

当时我可以看到 mysql 是 CPU 的最大消费者。 mysql Server 是否需要优化?

请回复我上面的两个问题。

提前致谢

阿伦斯

最佳答案

我注意到您已经在使用 MySQL 查询缓存。

您是否尝试过使用 MySQL Workbench 连接到您的 MySQL 数据库?它提供了一种检查 MySQL 数据库的图形方式,包括进程列表。

如果您在防火墙后面,请尝试使用

show full processlist

但是,我认为这并没有什么帮助。

我假设您正在使用 PHP - MySQL 来提供网页。所以这意味着您会发现大多数 MySQL 连接都是由 PHP 建立的。查看一次有多少个 apache 线程在运行。你可以试试:

ps aux |grep httpd |wc -l

如果您在 apache 上有更多线程连接到 MySQL,那么您就知道您遇到了问题。

您提到您有一个繁忙的站点,因此,您的问题的真正答案是缓存您的内容,可能使用 memcached。这个想法是为了减少对 MySQL 服务器的命中。您的服务器有足够的 RAM,非常适合 memcached。

这个想法是在一定时间内重用内容,具体取决于内容是否需要新鲜度:

<?php

$cachedContent = $memcache->get("cacheKey");

if (!$cachedContent) {

// retrieve from MySQL and formulate HTML here
// you can use obstart so that you can reuse your previous code
ob_start();

// your previous code here
// echo or
?>
<div>
previous generated content from mysql
</div>
<?php

// now cachedContent contains your previous generated HTML
$cachedContent = ob_get_contents();

// set content into memcache
$memcache->set("cacheKey", $cachedContent, false, 1800);

// clear the buffer
ob_end_flush();

}

echo $cachedContent;

?>

您需要先找到要缓存的内容。好的起点是:

  1. index.php 页面上的低效部分(我认为这将是点击率最高的页面之一)
  2. 检查您的 GA 以了解大多数热门页面。
  3. 检查您的 MySQL 慢速查询并缓存这些内容。

关于mysql总是使用最大连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com