作者归档:SK

关于SK

服务器维护 服务器配置 服务器 维护 运维 网管 系统调优 网络调优 数据库优化

mysql长连接和短连接

什么是长连接?

其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

通常的短连接操作步骤是:

连接-》数据传输-》关闭连接

而长连接通常就是:

连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接

这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了

什么时候用长连接,短连接?

长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费。

但是对于服务端来说,长连接也会耗费一定的资源,需要专门的线程(unix下可以用进程管理)来负责维护连接状态。

总之,长连接和短连接的选择要视情况而定。

 

首先,如果使用了长连接而长期没有对数据库进行任何操作,那么在timeout值后,mysql server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。

在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库。如果是在mysql 5.1.6之前,那么则应在每次执行完real_connect 之后执行mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) ,如果是mysql 5.1.6+,则在connect之前执行一次就够了。

 

查看mysql连接数

mysqladmin -uroot -p  processlist

实际的测试中我发现,当设置了MYSQL_OPT_RECONNECT为1时,超时后再查看processlist,则自动建立的连接不在列表中,但事实上连接确实建立并被使用了。

 

在MYSQL的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时),服务器将断开这条连接,后续在该连接上进行的查询操作都将失败。网络上对该问题的描述非常多。也提供了相应的解决办法。我在这里提一些我自己的看法。

解决办法一:修改MYSQL服务器的配置参数

道理非常简单,MYSQL的默认设置是在数据库连接超过8小时没有使用后将其断开,如果我们将这个时间改成更大的数值,那么连接超时所需的时间就会更长,也就意味着更不容易超时。网络上提供的修改方法一般是修改/etc/my.cnf,在这个文件中添加一行wait_timeout=你需要设置的超时时间。实际上有一种比较简单的方法来修改这个参数:

首先作为超级用户登录到MYSQL,注意必须是超级用户,否则后面会提示没有修改权限。然后输入

show global variables like ‘wait_timeout’;

回车执行后显示目前的超时时间:

+—————+——-+

| Variable_name | Value |

+—————+——-+

| wait_timeout | 28800 |

+—————+——-+

1 row in set (0.00 sec)

上面显示的是默认的超时时间,即8个小时(单位是秒)。现在重新设置该参数,例如我们要将超时时间设置成10个小时,可以输入:

set global wait_timeout=36000;

回车执行,显示:

Query OK, 0 rows affected (0.00 sec)

表示设置成功,可以重新使用show global variables like ‘wait_timeout’来验证。

这种方法比较直观,而且设置的参数立即生效。但如果/etc/my.cnf中没有配置,则重启服务后,global变量会从/etc/my.cnf中读取新的变量值。

 

下边是一段示例代码:

if(!mysql_real_connect(&logdb, my_hostname, my_user, my_password, my_dbname, my_port, my_sock, 0)){
ast_log(LOG_ERROR, “Failed to connect to mysql database %s on %s.\n”, my_dbname, my_hostname);
use_mysql = 0;
} else {
char value = 1;
mysql_options(&logdb, MYSQL_OPT_RECONNECT, (char*)&value);
use_mysql = 1;
}

Java占用CPU特高的问题

站点:某韩国在线商城
程序架构:java+mysql
系统:redhat linux 6.1
故障现象:CPU高达1000%+ 网站无法访问,数据库无任何请求,java阻塞

服务器硬件配置较高,dell r720高配24核 2.4G 32G

网络流量20Mbps左右

程序员总是爱说:“按道理没理由这样”

果然应了 程序员出错最喜欢说的20句话

 

 

程序员出错最喜欢说的20句话

1.见鬼了…。

2.以前重来没出过问题。

3.昨天还好好的。

4.这怎么可能?

5.一定是机器出了问题。

6.你究竟输入什么了导致它崩溃?

7.应该是数据有问题。

8.我好几个星期都没碰这块代码了!

9.你一定弄错了版本。

10.怎么会就这么巧。

11.我不可能把所有的问题都测到。

12.这不可能是因为它引起的。

13.本来好用的,只是没测试过。

14.肯定是有人改了我的代码。

15.查查你机器上有没有病毒。

16.even though it doesn‘t work, how does it feel?

17.你的机器上不能使用这个版本。

18.为什么你会觉得应该出那个结果才是正确的?

19.程序出问题时你在干什么了?

20.这问题我改了呀!

 

iozone进行IO测试

iozone概况
iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。
可以测试 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。
测试的时候请注意,设置的测试文件的大小一定要大过你的内存(最佳为内存的两倍大小),不然linux会给你的读写的内容进行缓存。会使数值非常不真实。 继续阅读

软RAID 5建立过程

1:Raid定义
  RAID,全称Redundant Array of Inexpensive Disks,中文名为廉价磁盘冗余阵列.RAID可分为软RAID和硬RAID,软RAID是通过软件实现多块硬盘冗余的.而硬RAID是一般通过RAID卡来实现RAID的.前者配置简单,管理也比较灵活.对于中小企业来说不失为一最佳选择.硬RAID往往花费比较贵.不过,在性能方面具有一定优势. 继续阅读

ext3 vs ext4

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能: 继续阅读

Linux的安全机制

经过十多年的发展,Linux的功能在不断增强,其安全机制亦在逐步完善。按照TCSEC评估标准,目前Linux的安全级基本达到了C2,更高安全级别的Linux系统正在开发之中。 

下面我们来看一看Linux已有的安全机制,这些机制有些已被标准的Linux所接纳,有些只是提供了“补丁”程序。  继续阅读

服务器DIY配置服务

         即日起我们将为广大站长、公司企业提供专业DIY服务器、工作站配置及提供服务器配件产品。
主要为客户提供各级机架1U、2U以及多U服务器、图形工作站、网络存储等方案设计以及配件,提供最完整、最经济的规划咨询和解决方案。 继续阅读

YUM在centos6上的使用

YUM简介:

YUMYellow dog Updater Modified的简称,yum是软件的仓库,目的是解决RPM依赖关系,它与APTAdvanced Packaging Tools)等一些RPM包管理方式的出现让RPM包的安装与Windows平台软件安装几乎一样的方便。 继续阅读

LAMP架构简介

. 什么是LAMP
LAMP是一种Web网络应用和开发环境,是Linux, Apache,MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代表的方面功能非常强大的组件。
LAMP这个词的由来最早始于德国杂志“c’t Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件并不是开始就设计为一起使用的,但是,这些软件都是开源的,可以很方便的随时获得并免费使用,这就导致了这些组件经常在一起使用。这些组件的兼容性也在不断完善,为了改善不同组件之间的协作,已经创建了某些扩展功能,在一起的应用情形变得非常普便,因而成为目前最流行的web应用基础架构。 继续阅读