TCP握手/挥手的过程分析



TCP握手/挥手的过程分析

TCP连接建立

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成,称为被动打开(passive open)。

第一次握手:客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN(表示同步)分节(SYN=J),它告诉服务器客户将在连接中发送到数据的初始序列号。并进入SYN_SEND状态,等待服务器的确认。

第二次握手:服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接[......]

Read more

高性能站点维护常用命令汇总



高性能站点维护常用命令汇总。

1. 查看Web服务器进程连接数
netstat -antp | grep 80 | grep ESTABLISHED -c

2.查看Nginx运行进程数
ps -ef | grep nginx | wc -l
返回的数字就是nginx的运行进程数,如果是apache则执行
ps -ef | grep httpd | wc -l

3.查看MySQL进程连接数:
ps -axef | grep mysqld -c

4.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:
netstat -n | awk ‘/^[......]

Read more

ClassLoader详解

ClassLoader详解 .

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:

bootstrap classloader
|
extension classloader
|
system classloader

bootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspath选项或使用-D选项指定sun.boot.class.path系统属性值可以指定附加的类。这个加载器的是非常特殊的,它实际上不是java.lang[......]

Read more

URLClassLoader加载class到当前线程类加载器

Java利用ClassLoader将类载入内存,并且在同一应用中,可以有很多个ClassLoader,通过委派机制,把装载的任务传递给 上级的装载器的,依次类推,直到启动类装载器(没有上级类装载器)。如果启动类装载器能够装载这个类,那么它会首先装载。如果不能,则往下传递。当父类为 null时,JVM内置的类(称为:bootstrap class loader)就会充当父类。想想眼下的越来越多用XML文件做配置文件或者是描述符、部署符。其实这些通过XML文档描述的配置信息最终都要变成 Java类,基实都是通过ClassLoader来完成的。URLClassLoader是ClassLoader的子[......]

Read more

Static与线程安全

Static与线程安全。先来说说Static的用法之后介绍线程安全的相关知识。

类(static)变量

在所有类的实例中共享

可以被标记为public或private

如果被标记为public而没有该类的实例,可以从该类的外部访问。

 

有时想有一个可以在类的所有实例中共享的变量。比如,这可以用作实例之间交流的基础或追踪已经创建的实例的数   量。

可以用关键字static来标记变量的办法获得这个效果。这样的变量有时被叫做class variable,以便与不共享的成员或实例变量区分开来。

Static变量在某种程度上与其它语言中的全局[......]

Read more

linux 下 mysql 安装目录在哪里

linux 下 mysql 安装目录在哪里。linux mysql 安装介绍:

linux 服务器 RedHat 5.0.server.

MySQL 版本:

下载地址链接:http://dev.mysql.com/downloads/mysql/5.1.html

MySQL 服务端:MySQL-server-community-5.1.38-0.rhel5.i386.rpm

MySQL 客户端:MySQL-client-community-5.1.38-0.rhel5.i386.rpm

1 安装步骤首先加载光驱:

mount /dev/cdrom /m[......]

Read more

如何理解Hadoop-Hbase原理与应用总结

如何理解Hadoop-Hbase原理与应用总结。1 我们常说HBase是“数据即日志”的数据库,它是怎样修改和删除数据的?和Oracle这类传统的RDBMS有什么区别?

答:首先Hbase中的一个“元素”是由行键、列族名、限定符、时间戳唯一标识的并且行键作为数据行在表里的唯一标识,我们只有通过行键来访问列族别无他法。

修改数据:我们先找到要修改的行键把新的数据记录追加到对应的列族中并打上一个新时间戳代表最新版本。
删除数据:插入带有删除标记的行进入,相当于把整个行键所在的行删了。

小结:hbase中所有修改和删除都是用insert方式来完成的,这是由底层HDFS文件系统特性[......]

Read more

linux ab性能测试方法

linux ab性能测试方法。并发用户数:某一时刻同时向服务器发送请求的用户总数。

吞吐率:单位时间内服务能够处理的最大请求数。

服务器平均请求处理时间:衡量服务器的整体服务质量,为吞吐率的倒数。

用户平均请求等待时间:衡量服务器在一定并发用户数情况下,对于单个用户的服务质量。

Linux下查看进程打开的文件句柄数

Linux下查看进程打开的文件句柄数。–查看系统默认的最大文件句柄数,系统默认是1024

# ulimit -n

1024

 

—-查看当前进程打开了多少句柄数

# lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more

131 24204

57 24244

57 24231   ……..

其中第一列是打开的句柄数,第二列是进程ID。

可以根据ID号来查看进程名。

# ps aef|grep 24204

nginx  24204 24162 99 16[......]

Read more

Hadoop小文件存储优化方法

Hadoop小文件存储优化方法。一、概述

首先明确概念,这里的小文件是指小于HDFS系统Block大小的文件(默认64M),如果使用HDFS存储大量的小文件,将会是一场灾难,这取决于HDFS的实现机制和框架结构,每一个存储在HDFS中的文件、目录和块映射为一个对象存储在NameNode服务器内存中,通常占用150个字节。如果有1千万个文件,就需要消耗大约3G的内存空间。如果是10亿个文件呢,简直不可想象。这里需要特别说明的是,每一个小于Block大小的文件,存储是实际占用的存储空间仍然是实际的文件大小,而不是整个block大小。

为解决小文件的存储Hadoop自身提供了两种机制来解[......]

Read more