5熊猫网

 找回密码
 免费注册

QQ登录

只需一步,快速开始

开启左侧
 楼主: leikang|查看: 39234|回复: 20
[网站] 

Dell R620+Windows 2008 R2+MySQL5.7.21+PHP7.2.0+Zend Optimizer安装配置教程

 [复制链接]
 楼主|leikang 发表于: 2018-11-14 11:38:22|显示全部楼层
提示: 该帖被管理员或版主删除
 楼主|leikang 发表于: 2018-11-17 21:42:13|显示全部楼层
▲温馨提示:图片的宽度最好1200 像素,目前最佳显示是 900 像素,请勿小于 900 像素▲
提示: 该帖被管理员或版主删除
部分图片、文章来源于网络,版权归原作者所有;如有侵权,请联系(见页底)删除
 楼主|leikang 发表于: 2019-3-23 00:19:13|显示全部楼层
提示: 该帖被管理员或版主删除
 楼主|leikang 发表于: 2019-4-10 18:48:44|显示全部楼层

安装Zend Guard Loader

由于ZendOptimizer不支持PHP5.3,使用PHP5.3以上版本的用户就安装Zend Guard Loader (Runtime for PHP 5.3)。很简单解压出ZendLoader.dll,放到PHP的ext目录。然后修改php.ini,在文件末端添加以下代码
  1. [Zend.loader]
  2. zend_extension=C:\Program Files\PHP\ext\ZendLoader.dll
  3. zend_loader.enable=1
  4. zend_loader.disable_licensing=1
  5. zend_loader.obfuscation_level_support=3
  6. zend_loader.license_path=
复制代码


注意:1、zend_extension的路径不需要加引号!!
配置完成,打开刚刚的phpinfo.php文件,可以看到“Zend Engine”。
部分图片、文章来源于网络,版权归原作者所有;如有侵权,请联系(见页底)删除
 楼主|leikang 发表于: 2019-4-16 18:44:24|显示全部楼层

MySQL 5.6下table_open_cache参数合理配置详解

  table_cache 是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做 table_open_cache。table_cache 主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与 max_connections 有关。
  例如,对于 1000 个并行运行的连接,应该让表的缓存至少有 1000 × N ,这里 N 是应用可以执行的查询的一个联接中表的最大数量。此外,还需要为临时表和文件保留一些额外的文件描述符。

一:缓存机制
  当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。
  在执行缓存操作之前,table_open_cache 用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_open_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。

  table_open_cache 指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。

二:表文件描述符的缓存大小
  表描述符缓存大小,可减少文件打开/关闭次数;当打开一个表后,会把这个表的文件描述符缓存下来 。

  1. # table_open_cache
  2. 默认值 2000
  3. 最小值 1
  4. 最大值 524288
复制代码


三:设置 table_open_cache
  通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_open_cache的值。
  如果你发现open_tables等于table_open_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了(上述状态值可通过SHOW GLOBAL STATUS LIKE 'Open%tables‘获得)。
  注意,不能盲目地把table_open_cache设置成很大的值,设置太大超过了shell的文件描述符(通过ulimit -n查看),造成文件描述符不足,从而造成性能不稳定或者连接失败。

  查看下当前的table_open_cache设置:
  1. MySQL> show variables like '%table_open_cache%';
复制代码
a.jpg

  1. MySQL> show global status like 'open%tables%';
复制代码
b.jpg
open_tables    : 打开后在缓存中的表数量
Opened_tables  : 打开的所有表数量
测试环境:腾讯云CDB,内存4000M


四:如何判断 table_open_cache 大小是否够用?
  可根据MySQL的上面两个状态值来分析
  通过以上两个值来判断 table_open_cache 是否到达瓶颈
  当缓存中的值 open_tables  临近到了 table_open_cache 值的时候,说明表缓存池快要满了 但 Opened_tables 还在一直有新的增长 这说明你还有很多未被缓存的表,这时可以适当增加 table_open_cache 的大小。

  在控制台查看到table_open_cache=512,监测table_open_cache设置是否合理,是否需要优化。
  发现open_tables等于table_open_cache,都是512,说明MySQL正在将缓存的表释放以容纳新的表,此时可能需要加大table_open_cache的值,4G内存的机器,建议设置为2048。

快照126.png
测试环境:DELL R620服务器(E5-2650 *2个、共32线程、32G内存、三星民用ssd盘*4个,系统、数据库、论坛各独占一个固态硬盘,C盘为250G)

  比较适合的值:
  1.   Open_tables / Opened_tables >= 0.85
  2.   Open_tables / table_open_cache <= 0.95
复制代码

  如果对此参数的把握不是很准,有个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。
  一些资料推荐把这个数值设置为(max_connections* 查询同时用到的表数)。我实践中发现,一般设置为max_connections就没问题了(如果还不够,可以继续加大,但不能设置大得离谱,可能会引发其他问题)。即时生效的设置:
  1. set global table_open_cache = 2048;
  2. Query OK, 0 rows affected (0.00 sec)
复制代码
    (立即生效重启后失效)
  设置后可以观察一下,如果 opening table 不再怎么超出,说明此修改是有效的,将其添加到 MySQL 配置文件 my.ini 中 MySQLd 下添加 table_open_cache,这样数据库重启后仍可保留此设置。
  1. [MySQLd]
  2. table_open_cache = 2048
复制代码
 楼主|leikang 发表于: 2019-4-16 20:57:18|显示全部楼层
提示: 该帖被管理员或版主删除
部分图片、文章来源于网络,版权归原作者所有;如有侵权,请联系(见页底)删除
 楼主|leikang 发表于: 2019-7-21 12:05:26|显示全部楼层
提示: 该帖被管理员或版主删除
 楼主|leikang 发表于: 2019-7-25 18:34:23|显示全部楼层
提示: 该帖被管理员或版主删除
部分图片、文章来源于网络,版权归原作者所有;如有侵权,请联系(见页底)删除
 楼主|leikang 发表于: 2019-10-9 00:46:53|显示全部楼层
提示: 该帖被管理员或版主删除
 楼主|leikang 发表于: 2019-10-15 01:48:43|显示全部楼层

解决DISCUZ“UC通信成功但通知失败”问题

国庆长假大家玩的开不开心呢?小编长假归来刚上班,就遇到了一个客户的关于discuz的棘手问题。问题是这样的:“更新应用缓存->通知失败”。对于在php虚拟主机上的这类问题,小编也遇到了不少,于是开始帮客户分析问题。
discuz 10 10 1 300x53 解决discuz“UC通信成功但通知失败”问题
这个问题一开始,小编以为是UC通讯失败照成的,但是一检查,UC通讯是正常的。
后来经过查找,发现1011版本是不会出现“通知失败的应用:discuz board”的,1122才会出现。
找到问题,相对应的解决方法也出来了,解决方法如下:
找到/source/class/discuz/discuz_application.php文件。
删除369~371这三行代码即可!改后暂时没有发现什么问题,这个是目前临时解决方法。
if(strpos($temp, $str) !== false) {
system_error(‘request_tainting’);
}

部分图片、文章来源于网络,版权归原作者所有;如有侵权,请联系(见页底)删除
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

© 2002-2025, 蜀ICP备12031014号, Powered by 5Panda
GMT+8, 2025-5-1 01:10, Processed in 0.140401 second(s), 7 queries, Gzip On, MemCache On
快速回复 返回顶部 返回列表