我们有一个运行 nginx 和 PHP-FPM 的负载相当大的服务器。我们在这台服务器上有 6 个网站,运行 PHP-FPM 和 nginx。软件都是 vBulletin 3.8 和 WordPress。数据库位于单独的服务器上。
现在,因为这些是非常受欢迎的网站,我们通常一次有 7-8,000 名访问者在线,每个页面大部分都会访问数据库。我相信这是我们问题的根源。
因为我们在 MySQL 服务器上有这么多大型数据库,而且因为查询可以,老实说,在软件中会好很多,我认为 MySQL 有时会无法及时将结果返回给 PHP,从而产生级联效应,最终导致一切停止,直到我们重新加载 PHP-FPM。在我们这样做之后,一切又开始正常了。
我在解决此问题时遇到问题的原因是我无法从日志中真正辨别出任何内容。在 MySQL 慢查询日志中,当停机发生时,我看不到任何有趣的内容。在 nginx 日志中,我看到数以千计的条目说读取请求超时或连接超时(到 PHP-FPM)。在 PHP-FPM 日志中,我看到很多行说“执行超时(31 秒),终止
所以在这一点上我完全不知道去哪里寻找问题。显然,无论发生什么事,都是因为这些脚本有时执行得不够快(通常它们会在一秒钟内加载,但会发生一些事情导致加载时间猛增)。这种情况一天发生很多次,对我们来说已经成为一个相当大的问题。
现在我只有一个 crontab 来每 10 分钟为 php5-fpm 重新加载提供服务,它可以解决崩溃问题。当然,当PHP重新加载时,nginx会抛出502网关错误,所以也不是很好的解决方案。
PHP 正在运行 APC 缓存,如果这很重要的话。我在一些地方读到 APC 在某些情况下会导致挂起。
任何指针都会有所帮助。我真的不想一直担心这台机器。
当然可以提供更多信息。只要让我知道你需要什么。
更新:我只是将 apc.php 复制到一个网络根目录并访问它以查看我们的统计信息。事情看起来不错。然后我单击链接转到用户统计数据,然后 BOOM 服务器立即挂起。我重新加载了 php-fpm,然后重新加载了用户统计页面,它运行良好。等了一分钟,再次重新加载,服务器再次挂起。
所以这肯定似乎与 APC 相关。问题是 - 我们如何解决它?
APC 配置:
[apc]
apc.enabled="1"
apc.stat = "1"
apc.max_file_size = "2M"
apc.localcache = "1"
apc.localcache.size = "256"
apc.shm_segments = "1" …Run Code Online (Sandbox Code Playgroud) 我最近启动了一个带有 WordPress 的 LAMP 服务器(所有最新版本),我正在尝试安装我最近购买的 SSL 证书。当我重新启动时apachectl,error_log 给了我这个:
[Tue Feb 25 01:07:14.744222 2014] [mpm_prefork:notice] [pid 1744] AH00169: caught SIGTERM, shutting down
[Tue Feb 25 01:07:17.135704 2014] [suexec:notice] [pid 1765] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Feb 25 01:07:17.217424 2014] [auth_digest:notice] [pid 1766] AH01757: generating secret for digest authentication ...
[Tue Feb 25 01:07:17.218686 2014] [lbmethod_heartbeat:notice] [pid 1766] AH02282: No slotmem from mod_heartmonitor
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.5/modules/mysql.so' - /usr/lib64/php/5.5/modules/mysql.so: cannot open shared …Run Code Online (Sandbox Code Playgroud) MySQL 的哪些配置选项提供了最大的速度改进?
我想知道实际的配置文件改进、表类型、硬件设置、复制等。除了查询结构和表结构(这些很容易在网站和 Stack Overflow 上找到)。诸如查询缓存设置之类的东西是否为您提供了最快的速度?驱动器怎么样?将它放在外部 RAID 还是内部 RAID 上更好?复制是否为您提供了更好的性能,尤其是读取大型查询?
您还进行了哪些其他设置/更改来提高 MySQL 的性能?
注意:我意识到这些非常依赖于使用(即,小型网站与数据仓库),但我认为我们大多数人可能在各种站点/系统上工作,因此了解可以应用于不同站点/系统的各种技术是很好的情况。另外,我认为一些技术可以在情况之间转移。
我想开始安排远程 mysqldump crons,我更愿意为此目的使用一个特殊帐户。我想授予该用户获取完整转储的最低权限,但我不确定最好的方法。
是不是就这么简单
grant SELECT on *.* to '$username'@'backuphost' identified by 'password';
Run Code Online (Sandbox Code Playgroud)
还是我错过了更好的方法?
接管运行 MySQL 的 Debian Etch Web 服务器。
我通常使用以下命令启动、停止和重新启动 msyql:
/etc/init.d/mysql 重启
由于某种原因,我得到以下信息:
:~# /etc/init.d/mysql 停止
停止 MySQL 数据库服务器:mysqld 失败!
mysql进程运行良好:
:~# ps aux | grep mysql
root 2045 0.0 0.1 2676 1332 ? S Jun25 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 2082 0.6 10.7 752544 111188 ? Sl Jun25 18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 2083 0.0 0.0 1568 504 ? S Jun25 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 11063 0.0 0.0 2856 716 …Run Code Online (Sandbox Code Playgroud) 首先,这不是从 MySQL 本身加载数据,而是使用命令行工具“mysqlimport”。
我正在使用它直接将 CSV 加载到表中,并且需要查看它生成的警告。我似乎无法在打开详细或调试的情况下显示警告。有任何想法吗?
(MySQL 5.0.5)
我想暂时让 SELinux 在服务器上运行以提高安全性。
我通常禁用 SELinux 以使其正常工作。
如何告诉 SELinux 允许 MySQL 连接?
我在文档中找到的最多的是来自 mysql.com 的这一行:
如果您在 Linux 下运行并且启用了安全增强 Linux (SELinux),请确保您已禁用 mysqld 进程的 SELinux 保护。
哇...这真的很有帮助。
我在VirtualBox 的Windows XP 上运行的 CentOS 6.1 虚拟机上运行 MySQL5.6.3 。
网卡配置为桥接模式,所以我的物理机和虚拟机共享同一个以太网卡。
在虚拟机上,一切正常:互联网访问、DNS 查找。但是,连接到 MySQL 守护程序需要一段时间,并且日志不断显示此警告:
[警告] IP 地址“192.168.1.201”无法解析:名称解析暂时失败
192.168.1.201 是我运行 MySQL 客户端的主机。
看起来虽然 DNS 查找工作正常,但反向DNS 查找最终会超时。
下面是虚拟机配置:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:4B:3D:7C"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
PEERDNS=yes
# cat /etc/resolv.conf
nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
我的网络配置有问题吗?
我已经在我的非托管 VPS 上安装了 Webuzo。我无法安装任何应用程序,因为它给了我诸如“无法连接到 MySQL 服务器”之类的错误。但是通过终端,MySQL 状态是 running。
任何人都可以帮助如何排除故障?
现在我可以使用 mysqldump 进行备份。但是我必须关闭网络服务器,并且大约需要 5 分钟来进行备份。如果我不关闭 Web 服务器,它将永远无法完成 + 备份期间网站将无法访问。
有没有更快/更好的方法来备份我的 22 GB 和不断增长的数据库?
所有的表都是 MyISAM。
mysql ×10
amazon-ec2 ×1
apache-2.2 ×1
backup ×1
centos ×1
csv ×1
database ×1
debian ×1
import ×1
linux ×1
networking ×1
nginx ×1
optimization ×1
permissions ×1
php ×1
php-fpm ×1
resolv.conf ×1
security ×1
selinux ×1
ssh ×1