ThinkPHP5 MySQL too many connections
ThinkPHP5在使用中,特别是执行耗时比较长的任务时,可能会出现`too many connections`的情况,就是连接数过多。
一方面,可能是程序上的问题,另一方面,这是数据库配置上的问题。
解决办法,修改 `application/database.php`, `params`参数默认为
Home of Little Jelly
ThinkPHP5在使用中,特别是执行耗时比较长的任务时,可能会出现`too many connections`的情况,就是连接数过多。
一方面,可能是程序上的问题,另一方面,这是数据库配置上的问题。
解决办法,修改 `application/database.php`, `params`参数默认为
有时候做开发是在Jupter环境或Google Colab环境(也是Jupter环境,支付Python2和Python3),但这种环境中使用MySQLdb需要先安装mysql-python。
命令如下
import sys
!{sys.executable} -m pip install mysql-python
import MySQLdb
MySQL 5.6升级到5.7注意点。
千万记得备份!
1. 安装方式出现变化,5.7安装完后需要先`初始化`再开启`mysqld`服务,且初始化完成后修改`root`密码的方式变了。
2. 一些变量不再支持,如 `thread_concurrency`,如果你配置了这个变量,删除它,不然不能开启`mysqld`服务。
3. `sql_mode`默认是`NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES`,即严格模式。
MySQL修改用户密码。
#### 方法1
适用于版本`<=5.6`的MySQL及已经重置过密码的MySQL5.7。
use mysql;
update user set password=password('123') where user='root' and host='localhost';
flush privileges;
MySQL数据库优化总结。
1. 尽量将多次查询放到一条SQL语句里执行,避免循环中的SQL查询,特别是数据库和网站分离时。
2. 对于left join,如果只是为了查询right表的某个字段,可选择使用配置文件来代替left join,将right的字段放入一个数组中,把数组序列化到一个文件中,需要用的时候反序列化,根据key查找value。
3. 使用数据库的内置函数
4. 只select用到的字段,而非select *
攻击模式处理方案。
方案(阿里云)
1. MySQL RDS添加只读实例,开启读写分离,平时可预留低配实例备用
2. MySQL数据库配置 wait_timeout和 interactive_timeout为 5~10,以便超时自动释放连接,避免连接数过多的问题
3. WAF CC自定义规则,设置单ip规定时长的访问限制及封禁时长,可设置2~3个阶段
4. WAF精准控制规,主要是黑白名单
阿里云Data Lake Analysis 查询Table Store数据。
Table Store
1. 开通Table Store服务(OTS)
2. 选择合适区域创建OTS实例,例 华北2北京区域下`labs`
3. 创建OTS数据表`web_page`
CentOS7安装nginx php7 MySQL。
注意点
1. 先安装memcached
2. 需要安装gcc、zlib、zlib-devel
3. memcache扩展编辑安装完成后需要在`/etc/php.d`手工创建 `memcache.ini`
4. memcache目录下运行`./configure`需要修改php-config的路径
MySQL新建用户并授权。
创建新用户
use mysql;
# 任意主机,host用 %
create user ‘usename’@’host’ IDENTIFIED by ‘password’;
flush privileges;
以下是本人亲身实践过的可靠的云产品或服务,其中绝大部分在生产环境中使用过。
该列表会不定期更新。
阿里云
计算
1. ECS
2. 负载均衡
3. 函数计算