linux服务器

linux iptables规则介绍

前提是你 提交于 2020-02-05 09:39:47
今天又学习了一下iptables,做一点总结来方便以后查阅。 Netfilter (网络过滤器) 是Linux 操作系统 核心层内部的一个数据包处理模块,主要负责数据包的拦截和转发,而iptables是NetFilter的一种应用化,为了方便定义规则和配置。 iptables工作在linux的内核空间,它通过内核空间的接口与用户空间通信, 控制数据包 在内核空间上的接口(就是经常说到的port)之间转发。 这是一条典型的iptables的配置语句,我从这里开始发散思维: iptables -t nat -A PREROUTING -d 172.30.1.8 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.25 这条语句的功能是:在PREROUTING链的nat表上添加一条规则将来自172.30.1.8的80端口的请求转发到192.168.9.25。 语句指定了七个部分:链,表,源,目的,协议,端口和动作,我就从之七个方面分别记录。 1、链(chain) iptables共有五个规则链:  1.INPUT (数据包流入内核空间) 2.OUTPUT(数据包流出内核空间) 3.FORWARD (数据包在port之间的转发)    4.PREROUTING (目的地址转换) 5.POSTROUTING(源地址转换)

性能检测工具介绍-Linux系统命令行

ぐ巨炮叔叔 提交于 2020-02-05 07:01:38
本文介绍的关于Linux自带命令进行性能检测的介绍,详细介绍这些linux自带的工具的使用。 一、uptime uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况,load average不是一个百分比,而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞(意味着CPU没有时间处理它),load average值将增加。另一方面,如果每个进程都可以立刻得到访问CPU的时间,这个值将减少。 load average的最佳值是1,这说明每个进程都可以立刻被CPU处理,当然,更低不会有问题,只说明浪费了一部分的资源。但在不同的系统间这个值也是不同的,例如一个单CPU的工作站,load average为1或者2都是可以接受的,而在一个多CPU的系统中这个值应除以物理CPU的个数,假设CPU个数为4,而load average为8或者10,那结果也是在2多点而已。 可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如,如果一个网络应用运行性能不理想,运行uptime检查系统负载是否比较高,如果不是这个问题更可能出现在你的网络上。 二、top Top命令显示了实际CPU使用情况,默认情况下

Linux常用性能检测命令

故事扮演 提交于 2020-02-05 06:57:37
Linux常用性能检测命令、uptime、top、iostat、Vmstat、pstree、Numastat、sar、free、Pmap、Strace、ulimit 一、uptime Uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况,load average不是一个百分比,而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞(意味着CPU没有时间处理它),load average值将增加。另一方面,如果每个进程都可以立刻得到访问CPU的时间,这个值将减少。 UP kernel下的load average的最佳值是1,这说明每个进程都可以立刻被CPU处理,当然,更低不会有问题,只说明浪费了一部分的资源。但在不同的系统间这个值也是不同的,例如一个单CPU的工作站,load average为1或者2都是可以接受的,而在一个多CPU的系统中这个值应除以物理CPU的个数,假设CPU个数为4,而load average为8或者10,那结果也是在2多点而已。 你可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如,如果一个网络应用运行性能不理想,运行uptime检查系统负载是否比较高

performance_test learning syllabus

六月ゝ 毕业季﹏ 提交于 2020-02-05 02:49:52
performance_test learning syllabus 背景 为什么要做性能测试 性能测试与功能测试的区别 相关术语(概念) 响应时间 并发用户数 TPS(Transaction Per Second) 性能测试学习大纲 一、操作系统篇 二、通信网络及协议 三、Linux重要基础命令 四、Web服务及中间件 五、MySQL数据库 六、NoSQL数据库Redis 七、性能理论和工具 八、接口测试篇(基础+高级) 九、JVM调优 十、TCP原理 十一、监控分析调优 十二、网站架构 背景 性能测试作为测试行业中一块较具技术含量的领域,许多人学习时无从下手。为方便新手更好的接触性能测试,本人网上收集了一些资料并结合本人的一些经验来帮助大家更好的学习性能测试。 为什么要做性能测试 1)目前绝大多数应用都是基于网络的分布式应用,我们无法知道用户数量,用户场景的不确定性,系统测试时,不仅仅是功能,业务逻辑,接口测试,还要测试系统性能。一个用户没问题,但是用户一旦多了就可能出现各种各样的问题,所以需要进行系统性能测试。 2)用户数量增加,系统负债增加,进行系统性能测试,知道系统承受的并发用户数量,带宽是否够用,cpu是否够用,内存是否够用,硬盘速度是否跟得上。从服务端来看,测试服务器是否能承载用户多并发,系统是否稳定,从用户角度看响应时间速度。 性能测试与功能测试的区别 功能测试:

对C# 程序员来说现在是到目前为止最好的时代

让人想犯罪 __ 提交于 2020-02-05 02:46:21
本文的标题来自 Scott Hanselman 的 Xamarin Evolve 2013 Talk Video - How C# Saved My Marriage ,想写下这些东西主要是今天看到了CSDN的一个极客头条《 观点:.NET向何处去? 》和传智播客.Net学院:《Linux+Mono公开课》的视频看了2个开头的视频, 邹华栋 老师讲的很不错,适合初学者,期待后续Jexus 和 nginx 公开课。但是课程中也有一些错误的地方, 本文将自己的一些看法及时记录下来和更多的人分享。 公开课提到Mono才刚出来不久还不成熟,这里涉及到一个Mono的历史,具体的历史在园子里有很多同学也介绍了,我都收录在这篇博客《 Mono在国内的发展历程(相关文章汇总) 》, 2000年8月 , 微软 、惠普和英特尔共同制定CLI和C#编程语言的标准规格,微软在2001年把CLI和C# 提交给了ECMA[ECMA是一个致力于推动行业范围内采用信息和通信技术的非特定供应商的国际标准组织]标准化 ECMA 335 和 ECMA 334 ),比Java还早的标准化了.NET平台。Miguel de lcaza 看到了C#语言的优雅和高效率,Ximian内部对如何创建能有效提升生产效率的工具进行了大量的讨论

Linux进程同步机制-Futex

纵然是瞬间 提交于 2020-02-05 02:43:21
引子 在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢? futex诞生之前 在futex诞生之前,linux下的同步机制可以归为两类:用户态的同步机制 和 内核同步机制。 用户态的同步机制基本上就是利用原子指令实现的spinlock。最简单的实现就是使用一个整型数,0表示未上锁,1表示已上锁。trylock操作就利用原子指令尝试将0改为1: bool trylock ( int lockval ) { int old ; atomic { old = lockval ; lockval = 1 ; } // 如:x86下的xchg指令 return old == 0 ; } spinlock的lock操作则是一个死循环,不断尝试trylock,直到成功。 对于一些很小的临界区,使用spinlock是很高效的。因为trylock失败时,可以预期持有锁的线程(进程)会很快退出临界区(释放锁)。所以死循环的忙等待很可能要比进程挂起等待更高效。 但是spinlock的应用场景有限,对于大的临界区,忙等待则是件很恐怖的事情,特别是当同步机制运用于等待某一事件时(比如服务器工作线程等待客户端发起请求)

Linux Top命令详解

喜欢而已 提交于 2020-02-05 01:47:32
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 第一行,任务队列信息 同 uptime 命令的执行结果 系统时间:07:27:05 运行时间:up 1:57 min, 当前登录用户: 3 user 负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了 第二行,Tasks — 任务(进程) 总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie 第三行,cpu状态信息 0.0%us【user space】— 用户空间占用CPU的百分比。 0.3%sy【sysctl】— 内核空间占用CPU的百分比。 0.0%ni【】— 改变过优先级的进程占用CPU的百分比 99.7%id【idolt】— 空闲CPU百分比 0.0%wa【wait】— IO等待占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.0%si

Linux深入理解Socket异常

本秂侑毒 提交于 2020-02-04 23:49:44
在各种网络异常情况的背后,TCP是怎么处理的?又是怎样把处理结果反馈给上层应用的?本文就来讨论这个问题。分为两个场景来讨论 建立连接时的异常情况 1 正常情况下   经过三次握手,客户端连接成功,服务端有一个新连接到来。 2 客户端连接了服务端未监听的端口   在这种情况下,服务端会对收到的SYN回应一个RST(RFC 793 3.4),客户端收到RST之后,终止连接,并进入CLOSED状态。 客户端的connect返回ECONNREFUSED 111 /* Connection refused */。 3 客户端与服务器之间的网络不通,这又分两种情况   connect返回主机不可达。具体信息在不同系统上不一样,比如linux上的定义是EHOSTUNREACH 113 /* No route to host */。明显给出了一个不可访问的地址(例如,访问一个不存在的本地网络地址,或者DNS解析失败会导致这种情况。 connect返回连接超时。这种情况下,客户端发送的SYN丢失在网络中,没有得到确认,客户端的TCP会超时重发SYN。以ubuntu 12.04为例,重发SYN的时间,系列是:0,1,3,7,15,31,63(2n-1-1)。即发送7个SYN后等待一个超时时间(例如:127秒),如果在这段时间内仍然没有收到ACK,则connect返回超时。   在这两种情况下,

linux高级编程day10 笔记

妖精的绣舞 提交于 2020-02-04 20:10:32
一.TCP的编程模型 回顾: UDP模型的UML图 TCP模型的UML图 案例1: TCP的服务器(在案例中使用浏览器作为客户程序) socket建立服务器的文件描述符号缓冲 bind把IP地址与端口设置到文件描述符号中 listen负责根据客户连接的不同IP与端口,负责生成对应的文件描述符号及其信息 accept一旦listen有新的描述符号产生就返回,否则阻塞。 View Code //tcpserver.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> main() { int serverfd; int cfd; int a; struct sockaddr_in sadr; struct sockaddr_in cadr; socklen_t len; int r; char buf[1024]; //1.socket serverfd=socket(AF_INET,SOCK_STREAM,0); if(serverfd==-1) printf("1:%m\n"),exit(-1); printf(

linux下安装mysql详细步骤

廉价感情. 提交于 2020-02-04 19:22:41
最近买了个阿里云服务器,搭建mysql环境。 该笔记用于系统上未装过mysql的干净系统第一次安装mysql。自己指定安装目录,指定数据文件目录。 linux系统版本: CentOS 7.3 64位 1、官方安装文档 http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 2、下载 Mysql yum包 http://dev.mysql.com/downloads/repo/yum/ 下载到本地再上传到服务器,或者使用wget 直接下载 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm 3、安转软件源 将 platform-and-version-specific-package-name 替换为你下载的rpm名 rpm -Uvh platform-and-version-specific-package-name.rpm 例如 rpm -Uvh mysql57-community-release-el7-10.noarch.rpm 4、安装mysql服务端 yum install -y mysql-community-server 如果网络环境不是很好,执行完命令就可以去泡杯茶🍵或者荣耀杀一局(可以自己先下载好相应的rpm包或直接下载