发表于: 2017-11-24 19:34:52

2 722


今天完成的事

【接着进行压测】

但是发现一个问题。

200多个样品的时候就崩了。惊人的错误率。

我去看了一下

多数都翻车在数据库连接池这里。

这也没做到压榨程序的目的啊。

我先去改一下连接池好了。

改完了发现不是连接池的问题。

这个问题写在今天的问题里面吧。





TPS521


TPS510

TPS517

TPS436

用我的电脑吐血测试除了,我的程序并发数应该是在瞬间118左右。

【学习Memcached】

先来理解。

Memcached有两个核心组件组成:服务端(ms)和客户端(mc)。首先mc拿到ms列表,并对key做hash转化,根据hash值确定kv对所存的ms位置。然后在一个memcached的查询中,mc先通过计算key的hash值来确定kv对所处在的ms位置。当ms确定后,客户端就会发送一个查询请求给对应的ms,让它来查找确切的数据。因为ms之间并没有护卫备份,也就不需要互相通信,所以效率较高。

适用场合
1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。
2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。
3.服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。

开始安装



服务列表已经存在。


开启Telnet的相关依赖

https://jingyan.baidu.com/article/1e5468f9033a71484961b7d7.html

https://jingyan.baidu.com/article/f79b7cb310b6079144023e8f.html

然后根据上面的文档测试能否运行。

搞定~

收获

安装Memcache,暂时还没涉及配置,需要配置的时候再去了解

遇到的问题

压测的时候突然发现

mysql出现了问题,很纠结,最后找到了原因,原因是内存不够用

数据库有问题,什么都不用管,直奔日志就行了。

报错如下。


箭头所指bytes必然是和内存有关的问题。

查看当前内存。

swap内存为0,这个为什么是0呢。

这个是swap是什么东西呢。


Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。


所以问题还是因为我的linux物理内存不够用了。

解决方法就是。

使用如下命令建立一个临时的swap分区:

dd if=/dev/zero of=/swap bs=1M count=512     //创建一个swap文件,大小为512M

mkswap /swap                                                      //将swap文件变为swap分区文件

swapon /swap                                                       //将其映射为swap分区

为了保证下次系统启动后,此swap分区被自动加载,需要修改系统的fstab文件,操作如下:

vi /etc/fstab //在其中添加如下一行 /swap swap swap defaults 0 0

参考文档来自http://blog.csdn.net/sxyandapp/article/details/77091007


总结一下这个问题。其实就是接数增大,会导致每个连接所占用的内存也增加,这样机器很容易因内存不足而死机。

明天的计划

任务6





返回列表 返回列表
评论

    分享到