`
文章列表

数据库死锁

数据库在进行insert,update,delete这些更新操作的时候为了保证数据一致性都会使用排他锁。 一个事务里进行update操作,在事务结束之前(commit or rollback)排他锁不会被释放。因此在一个事务里update多条数据的时候执行顺序就尤为重要,两个并发事务中更新操作的执行顺序不同就有可能产生死锁:(x, y分别表示一行数据)   transaction A {                                       transaction B {     getXLock();                              ...
1、top 命令 可以发现消耗较高CPU的进程 2、通过进程号pid,在linux上可以通过 top –H –p <pid> 命令,显示该进程中每个线程的CPU资源消耗情况,可以发现消耗较高CPU的线程 3、通过JVM命令 jstack -F <pid> > log.txt,打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了 4、还可以通过linux的strace命令(strace -o output.txt -T -tt -e trace=all -fp <pid>),查看进程中所有线程的运行情况

详解 Too many open files

    博客分类:
  • os
运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。 程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、locatio ...

DBCP连接池参数

DBCP连接池参数说明如下: 1、maxActive="10":表示并发情况下最大可从连接池中获取的连接数。 2、maxIdle="5":如果在并发时达到了maxActive=10,那么连接池就必须从数据库中获取10个连接来供应用程序使用,当应用程序关闭连接后,由于maxIdle=5,因此并不是所有的连接都会归还给数据库,将会有5个连接保持在连接池种中,状态为空闲。由于我们没有使用minEvictableIdleTimeMillis参数,因此空闲连接不会因为超时而被回收. 3、minIdle="2":minIdle默认情况下为0,并不生 ...
一 windows下安装 直接拷贝tcnative-1.dll到TOMCAT_HOME/bin目录下,启动即可 下载地址 http://archive.apache.org/dist/tomcat/tomcat-connectors/native/ 二 linux centos4.8或者ubuntu10.10 server安装 1.下载包 到http://apr.apache.org/下载下面3个包 apr-1.4.2.tar.gz apr- ...
在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿 计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算——可伸缩性 是生死交关的问题。 相关赞助商 由InfoQ和msup战略合作举办的“亚太软件研发团队管理年会” 在一个可伸缩的架构中,资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量。如果说性能衡量的是每一工作单元所需的资源消 耗,可伸缩性则是衡量当工作单元的数量或尺寸增加时,资源消耗的变化情况。换句话说,可伸缩性是整个价格-性能曲线的形状 ...
对Ketama的介绍 Ketama is an implementation of a consistent hashing algorithm, meaning you can add or remove servers from the memcached pool without causing a complete remap of all keys. Here’s how it works: * Take your list of servers (eg: 1.2.3.4:11211, 5.6.7.8:11211, 9.8.7.6:11211) * Hash ...
Memcached分布式算法在网上一搜可以找到一大片了,不过对于Memcached分布式算法中使用的consistent hashing算法,笔者一直没有彻底搞明白,尤其是具体是如何实现,包括虚拟节点的作用,以及为何会在缓存服务器变动的时候将影响降到最小十分迷惑。今天笔者有幸拜读了一篇质量很高的关于”Memcached一致性hash算法consistent hashing”的文章,摘录下来和大家一起分享,希望能对大家有所帮助。 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees中被提出,目前在 cache ...
协议简介   一致性哈希算法在1997年由麻省理工学院提出(参见0),设计目标是为了解决因特网中的热点(Hot pot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应 ...
mixi案例研究 mixi在提供服务的初期阶段就使用了memcached。 随着网站访问量的急剧增加,单纯为数据库添加slave已无法满足需要,因此引入了memcached。 此外,我们也从增加可扩展性的方面进行了验证,证明了memcached的速度和稳定性 ...
memcached的分布式 正如第1次中介绍的那样, memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。 服务器端仅包括 第2次、 第3次 前坂介绍的内存存储功能,其实现非常简单。 至于memcached的分布式,则是完全由客户端程序库实现的。 这种分布式是memcached的最大特点。 memcached的分布式是什么意思? 这里多次使用了“分布式”这个词,但并未做详细解释。 现在开始简单地介绍一下其原理,各个客户端的实现基本相同。 下面假设memcached服务器有node1~node3三台, 应用程序要保存键名为“tokyo”“kanagawa”“chiba” ...
memcached在数据删除方面有效利用资源 数据不会真正从memcached中消失 上次介绍过, memcached不会释放已分配的内存。记录超时后,客户端就无法再看见该记录(invisible,透明), 其存储空间即可重复使用。 Lazy Expiration memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。 这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。 LRU:从缓存中有效删除数据的原理 memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况 ...
Slab Allocation机制:整理内存以便重复使用 最近的memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。 在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。 但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下, 会导致操作系统比memcached进程本身还慢。Slab Allocator就是为解决该问题而诞生的。 下面来看看Slab Allocator的原理。下面是memcached文档中的slab allocator的目标: the primary goal of the slabs su ...

memcached的基础

memcached是什么? memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。 许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。 这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用 ...

交换分区(swap)

    博客分类:
  • os
SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.   它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。   需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存.SWAP分区只是临时的解决办法.   qlinux下得分区推荐一个交换分区,一个根分区,其中交换分区如上所说作为redhat或者其它虚机所划分的内存不够时候来使用!   交换分区(swap ...
Global site tag (gtag.js) - Google Analytics