模板是 zabbix系统提供的,进入 zabbix web 后台,Configuration-->Hosts groups-->点击“Create host group”-->选择template选项卡,选择模板“TemplateApp MySQL,Templdate OS Linux”,最后点击update 即可(032.png)
2,建立hosts
模板是 zabbix系统提供的,进入zabbix web 后台,configuration-->hosts-->点击你的主机 name-->选择template选
项卡,选择模板“Template App MySQL”,最后点击左边的“Add”按钮,最后点击“update”按钮即可(033.png)
3,rpm部署agent客户端
rpm方式安装:
# 添加zabbix帐号
groupadd zabbix
useradd zabbix -g zabbix -s /sbin/nologin
背景:把mysql换成mysqli时出现,连接数过多,其实际上并不是,原因是我挪动了一下php的sock文件位置导致,因这几个socket修改没有修改完全,于是出现了toomany
connections
,从mysql里show
processlist并没有发现真的有连接,其实用tshark抓下包估计能看到(http://justwinit.cn/post/7458/),并没有发出请求,而估计是mysqli的客户端自己报出来的,别看这个问题小,搞了老半天,都想重新安装Php了,发现原来是路径写错了同时mysqli的客户端提示连接数过多的误提示导致方向走错了。如下:
[root@iZ25z0ugwgtZ
etc]#
grep
-r
"mysql.sock"
./
./php.ini:pdo_mysql.default_socket=/data/runsock/mysqlsock/mysql.sock
./php.ini:mysql.default_socket
=
/tmp/mysql.sock
./php.ini:mysql.default_socket
=
/data/runsock/mysqlsock/mysql.sock
./php.ini:mysqli.default_socket
=
/data/runsock/mysql.sock
//这个位置被挪动到,/data/runsock/mysqlsock/mysql.sock导致。
修改后记得重启动php-fpm:
[root@iZ25z0ugwgtZ
etc]#
service
php-fpm
restart
Gracefully
shutting
down
php-fpm
.
done
Starting
php-fpm
done
______________________排查要点如下_______________________________
warning:
mysqli::real_connect():
(hy000/1040):
too
many
connections
in:
出现场景
:手动编译安装mysql,并制定安装位置,php以localhost方式连接mysql
原因分析
:手动编译安装制定位置后所有的mysql文件都在制定的目录或者data目录下面,php默认只会寻找/temp/mysql.sock找这个sock文件,所以会导致sock文件无法找到。
解决方法
:
1.给sock文件做个软链
ln
-s
/data/mysqldb/mysql.sock
/tmp/mysql.sock
或者
2.修改php的默认mysql.sock连接地址
mysql.default_socket=/data/mysqldb/mysql.sock
3.使用tcp
socket的方式进行连接
mysql('127.0.0.1','username','passwod')
下面给大家介绍PHP
mysql_connect()
函数
定义和用法
mysql_connect()
函数打开非持久的
MySQL
连接。
语法
mysql_connect(server,user,pwd,newlink,clientflag)
参数
描述
server
可选。规定要连接的服务器。
可以包括端口号,例如
"hostname:port",或者到本地套接字的路径,例如对于
localhost
的
":/path/to/socket"。
如果
PHP
指令
mysql.default_host
未定义(默认情况),则默认值是
'localhost:3306'。
user
可选。用户名。默认值是服务器进程所有者的用户名。
pwd
可选。密码。默认值是空密码。
newlink
可选。如果用同样的参数第二次调用
mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数
new_link
改变此行为并使
mysql_connect()
总是打开新的连接,甚至当
mysql_connect()
曾在前面被用同样的参数调用过。
clientflag
可选。client_flags
参数可以是以下常量的组合:
MYSQL_CLIENT_SSL
-
使用
SSL
加密
MYSQL_CLIENT_COMPRESS
-
使用压缩协议
MYSQL_CLIENT_IGNORE_SPACE
-
允许函数名后的间隔
MYSQL_CLIENT_INTERACTIVE
-
允许关闭连接之前的交互超时非活动时间
返回值
如果成功,则返回一个
MySQL
连接标识,失败则返回
FALSE。
提示和注释
注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用
mysql_close()
关闭了。
提示:要创建一个持久连接,请使用
mysql_pconnect()
函数。
例子
<?php
$con
=
mysql_connect("localhost","mysql_user","mysql_pwd")
if
(!$con)
{
die('Could
not
connect:
'
.
mysql_error())
}
//
一些代码...
mysql_close($con)
?>
诸如下面这些错误的提示:Warning: file_get_contents(/usr/local/tads/htdocs/XXXXXX/src/cache/countLoginnum.txt) [function.file-get-contents]: failed to open stream: No such file or directory in/usr/local/tads/htdocs/XXXXXXX/src/controllers/defaultController.php on line 43Warning: Cannot modify header information - headers already sent by (output started at /usr/local/tads/htdocs/XXXXXX/src/config/env.php:5) in/usr/local/taesdk/1.0/phplib3/src/base/core/TMWebResponse.class.php on line 332有的时候代码的警告会导致整个项目无法运行,比如某个变量无对象的情况,若无影响,这时如果屏蔽警告,就可以使整个项目恢复正常运行。当然它的作用不在于这,而是在成品网站或做服务器时,不输出错误信息可以减少被黑客攻击的风险(对于一些容易出错并且容易暴漏敏感数据的代码,一般多在数据库这块吧),也能在出错的情况下仍保持网站的美观。至于在调试下,那这个错误提示信息还是比较有用的,可以在PHP页面最前边加上一句: error_reporting(E_ALL &~E_NOTICE)让出错时显示错误信息。屏蔽的方法:屏蔽PHP错误提示方法一、在有可能出错的函数前加@,然后or die("") 如: @mysql_connect(...) or die("Database Connect Error")
屏蔽PHP错误提示方法二、编辑php.ini ,查找"display_errors =" ,将“=”后面的值改为"off。
屏蔽PHP错误提示方法三、在php脚本前加error_reporting(0),屏蔽所有错误提示。
例:
@$a = $b['a']//忽略@后面语句的错误
$a = @$b['a']//忽略@后面语句的错误,推荐使用这句。因为错误是在$b这个数组中发生的,所以@符号在$b前就可以了,这是错误真正发生的地方。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)