欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【关于Mysql数据库导致CPU很高的问题解决】,下面是详细的分享!
关于Mysql数据库导致CPU很高的问题解决
服务器环境 Liunx AS4 + PHP5 + Mysql5 + Apache 2
实用TOP 命令查询系统性能的时候发现CPU经常到达100%
开始以为是DDOS攻击……加装了防火墙(没起作用)
又开始从liunx系统查找是不是系统问题,(也没起作用)
偶尔从网络上发现一篇文章,有人也类似遇到了这样的问题,但并没指出具体解决方案,
不过提醒了我,不是系统问题就是程序问题!
这次我开始从新过滤PHP代码,偶尔发现很多兄弟写的代码只有“常”连接,竟然没有Close!
我把所以的页面都加装了数据库关闭,发现CPU一直就保持在1%~10%之间(正常)
所以提醒大家在写PHP程序的时候不要为了一点懒,导致系统溢出这样低级的错误!
好了就写倒这里了,一个小问题花了我几乎一个下午搞这个!也算是教训!
把一些mysql常用函数贴上,请牢记!其他类型数据库举一反三!
mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数
mysql_change_user -- 改变活动连接中登录的用户
mysql_client_encoding -- 返回字符集的名称
mysql_close -- 关闭 MySQL 连接
mysql_connect -- 打开一个到 MySQL 服务器的连接
mysql_create_db -- 新建一个 MySQL 数据库
mysql_data_seek -- 移动内部结果的指针
mysql_db_name -- 取得结果数据
mysql_db_query -- 发送一条 MySQL 查询
mysql_drop_db -- 丢弃(删除)一个 MySQL 数据库
mysql_errno -- 返回上一个 MySQL 操作中的错误信息的数字编码
mysql_error -- 返回上一个 MySQL 操作产生的文本错误信息
mysql_escape_string -- 转义一个字符串用于 mysql_query
mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
mysql_fetch_assoc -- 从结果集中取得一行作为关联数组
mysql_fetch_field -- 从结果集中取得列信息并作为对象返回
mysql_fetch_lengths -- 取得结果集中每个输出的长度
mysql_fetch_object -- 从结果集中取得一行作为对象
mysql_fetch_row -- 从结果集中取得一行作为枚举数组
mysql_field_flags -- 从结果中取得和指定字段关联的标志
mysql_field_len -- 返回指定字段的长度
mysql_field_name -- 取得结果中指定字段的字段名
mysql_field_seek -- 将结果集中的指针设定为制定的字段偏移量
mysql_field_table -- 取得指定字段所在的表名
mysql_field_type -- 取得结果集中指定字段的类型
mysql_free_result -- 释放结果内存
mysql_get_client_info -- 取得 MySQL 客户端信息
mysql_get_host_info -- 取得 MySQL 主机信息
mysql_get_proto_info -- 取得 MySQL 协议信息
mysql_get_server_info -- 取得 MySQL 服务器信息
mysql_info -- 取得最近一条查询的信息
mysql_insert_id -- 取得上一步 INSERT 操作产生的 ID
mysql_list_dbs -- 列出 MySQL 服务器中所有的数据库
mysql_list_fields -- 列出 MySQL 结果中的字段
mysql_list_processes -- 列出 MySQL 进程
mysql_list_tables -- 列出 MySQL 数据库中的表
mysql_num_fields -- 取得结果集中字段的数目
mysql_num_rows -- 取得结果集中行的数目
mysql_pconnect -- 打开一个到 MySQL 服务器的持久连接
mysql_ping -- Ping 一个服务器连接,如果没有连接则重新连接
mysql_query -- 发送一条 MySQL 查询
mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集
mysql_result -- 取得结果数据
mysql_select_db -- 选择 MySQL 数据库
mysql_stat -- 取得当前系统状态
mysql_tablename -- 取得表名
mysql_thread_id -- 返回当前线程的 ID
mysql_unbuffered_query -- 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行。
以上所分享的是关于关于Mysql数据库导致CPU很高的问题解决,下面是编辑为你推荐的有价值的用户互动:
相关问题:MySQL数据库负载很高连接数很多怎么处理
答:您好,很高兴为您解答。 第一先限制Innodb的并发处理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看机器压力,如果 非常大,先改成16让机器的压力下来,然后慢慢增达,适应自已的业务. 处理方法: set global innodb_thread_concurrency... >>详细
相关问题:mysql数据库cpu飙升到500%的话他怎么处理
答:运行平稳的数据库,如果遇到CPU狂飙,到80%左右,那一定是开发写的烂SQL导致的,DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查。 这里用到一个工具pt-kill,它可以帮助你 >>详细
相关问题:MySql数据库响应速度慢的问题。
答:1、看下开了打开数据库连接之后是否有及时关闭; 2、sql语句是否需要优化; 3、查询语句添加索引 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
