服务器tcp连接占满_服务器出现大量TIME_WAIT解决方案

一 、故障原因:

服务器突然出现大量time_wait(因为大量连接资源被占用后不释放的话,会导致网站正常访问不能响应)。如何应对?

我这边先检查了监控和服务器当前的状态(time_wait连接确实异常):

1、监控

7560ee29d112a5a5611bb99b60d4de6d.png

2、登录服务器检查

8a8e28762efd15f3817128b50b2a7ee2.png

二、排查思路:

1、猜测是否因为程序打开大量文件句柄,没有关闭导致。(问了研发同事,排查过后没有这种情况)

2、调大当前文件句柄

3、调优sysctl.conf文件

4、检查nginx连接情况

三、解决方法:

1、操作系统文件句柄之前已经调整过。

echo "ulimit -SHn 66536" >>/etc/rc.local

2、调优/etc/sysctl.conf

net.ipv4.tcp_syncookies &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信号量 信号量集结构 信号量集函数 信号量示例 31System V信号量(二) 用信号量实现进程互斥示例 32System V信号量(三) 用信号集解决哲学家就餐问题 33System V共享内存与信号量综合 用信号量解决生产者消费者问题 实现shmfifo 34POSIX消息队列 POSIX消息队列相关函数 POSIX消息队列示例 35POSIX共享内存 POSIX共享内存相关函数 POSIX共享内存示例 Linux网络编程之线程篇 36线程介绍 什么是线程 进程与线程 线程优缺点 线程模型 N:1用户线程模型 1:1核心线程模型 N:M混合线程模型 37POSIX线程(一) POSIX线程库相关函数 用线程实现回射客户/服务器 38POSIX线程(二) 线程属性 线程特定数据 39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一个简单的线程池实现 线程池性能分析 线程池实现
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §1.3 数据块、区间和段 28 §1.3.1 数据块(data block) 28 §1.3.2 区间(extent) 28 §1.3.3 段(segment) 28 §1.4 SQL语句处理 29 §1.4.1 SQL语句处理顺序 29 §1.4.2 COMMIT语句处理顺序 32 §1.5 共享池 33 §1.6 块缓存(数据高速缓冲区) 33 §1.7 数据库写入进程 34 §1.8 日志写进程 34 §1.9 数据库检查点 34 §1.10 归档处理 35 §1.11 程序全局区(PGA) 35 第2章 警告日志与跟踪日志 35 §2.1 警告与日志文件 36 §2.1.1 经常查看警告日志文件内容 36 §2.1.2 熟悉警告日志的事件或消息 36 §2.1.3 分析警告日志错误 40 §2.2 对警告日志进行归档 43 §2.3 跟踪文件 44 §2.3.1 跟踪文件的产生 44 §2.3.2 分析跟踪文件的信息 45 §2.3.3 跟踪文件的内容 45 §2.4 关于NET的日志与跟踪 47 §2.4.1 日志文件(LOG File) 47 §2.4.1.1 日志中的错误信息 47 §2.4.1.2 日志文件的命名 47 §2.4.1.3 设置日志参数 48 §2.4.1.4 在配置文件中设置日志参数 49 §2.4.1.5 在运行控制实用程序中设置日志参数 50 §2.4.1.6 理解监听日志中信息 50 §2.4.1.7 理解连接管理器信息 53 §2.4.2 跟踪文件( Trace File ) 53 §2.4.2.1 跟踪文件的命名: 54 §2.4.2.2 参数设置与初始化文件: 54 §2.4.2.3 在控制实用程序运行中设置跟踪参数 56 §2.4.2.4 服务器/客户包跟踪 57 §2.4.2.5 评估NET跟踪信息 58 §2.4.2.6 使用跟踪助理(Trace Assistant)检查跟踪文件 60 第3章 初始化参数、SQL脚本文件 63 §3.1 初始化参数文件 63 §3.2 在参数文件中指定参数值 64 §3.2.1 参数文件中的规则控制 64 §3.2.2 在参数值中使用特殊字符 65 §3.2.3 修改参数值 66 §3.2.4 显示当前参数值 69 §3.2.5 参数的使用 69 §3.2.6 参数的类型 69 §3.2.7 不能在参数文件中指定的参数 70 §3.2.8 当参数指定错误时怎么办? 70 §3.3 参数内容说明 70 §3.4 DBA常用参数说明 71 §3.4.1 跟踪文件路径(BACKGROUND_DUMP_DEST) 71 §3.4.2 在缓冲区驻留对象(BUFFER_POOL_KEEP) 71 §3.4.3 版本兼容(COMPATIBLE) 72 §3.4.4 控制文件路径(CONTROL_FILES) 72 §3.4.5 CPU个数(CPU_COUNT) 72 §3.4.6 数据缓冲区块数(DB_BLOCK_BUFFERS) 72 §3.4.7 数据块大小(DB_BLOCK_SIZE) 73 §3.4.8 读数据块数(DB_FILE_MULTIBLOCK_READ_COUNT) 73 §3.4.9 数据文件的数目(DB_FILES) 73 §3.4.10 全局数据库名(GLOBAL_NAMES) 74 §3.4.11 数据库实例名(INSTANCE_NAME) 74 §3.4.12 许可的最大会话数(LICENSE_MAX_SESSIONS) 74 §3.4.13 许可的最大用户数(LICENSE_MAX_USERS) 74 §3.4.14 许可的会话警告(LICENSE_SESSIONS_WARNING) 75 §3.4.15 归档文件目标路径(LOG_ARCHIVE_DEST) 75 §3.4.16 归档文件目标路径(LOG_ARCHIVE_DEST_ n) 75 §3.4.17 日志缓冲区大小(LOG_BUFFER) 76 §3.4.18 检查点块数(LOG_CHECKPOINT_INTERVAL) 76 §3.4.19 检查点间隔(LOG_CHECKPOINT_TIMEOUT) 76 §3.4.20 对大卸出文件大小(MAX_DUMP_FILE_SIZE) 76 §3.4.21 对大回滚段数(MAX_ROLLBACK_SEGMENTS) 77 §3.4.22 打开的光标数(OPEN_CURSORS) 77 §3.4.23 优化方式(OPTIMIZER_MODE) 77 §3.4.24 进程数(PROCESSES) 77 §3.4.25 回滚段名称(ROLLBACK_SEGMENTS) 78 §3.4.26 服务名(SERVICE_NAMES) 78 §3.4.27 会话的数(SESSIONS) 78 §3.4.28 共享池大小(SHARED_POOL_SIZE) 78 §3.4.29 分类区的大小(SORT_AREA_SIZE) 79 §3.4.30 用户卸出文件的路径(USER_DUMP_DEST) 79 §3.5 SQL脚本文件 79 §3.5.1 建立数据字典的脚本 79 §3.5.2 建立附加的数据字典 80 §3.5.3 带“NO”的脚本 81 §3.5.4 移植的脚本 81 §3.5.5 JAVA脚本 81 第6章 性能优化基础知识 82 §5.1 理解ORACLE性能优化 82 §5.1.1 响应时间与吞吐量的折衷 82 §5.1.2 临界资源 83 §5.1.3 过度请求的影响 83 §5.1.4 调整以解决问题 83 §5.2 优化的执行者 84 §5.3 设置性能目标 84 第7章 系统优化方法 85 §6.1 何时优化效率最高 85 §6.1.1 系统设计阶段和开发阶段的优化 85 §6.1.2 改善产品系统的优化 85 §6.2 优化的优先步骤 86 §6.2.1 步骤1:优化商业规则 86 §6.2.2 步骤2:优化数据设计 87 §6.2.3 步骤3:优化应用程序设计 87 §6.2.4 步骤4:优化数据库的逻辑结构 87 §6.2.5 步骤5:优化数据库操作 87 §6.2.6 步骤6:优化访问路径 88 §6.2.7 步骤7:优化内存分配 88 §6.2.8 步骤8:优化I/O和物理结构 89 §6.2.9 步骤9:优化资源争用 89 §6.2.10 步骤10:优化所采用的平台 89 §6.3 应用优化方法 90 §6.3.1 设定明确的优化目标 90 §6.3.2 创建最少可重复测试 90 §6.3.3 测试假想 90 §6.3.4 记录和自动测试 90 §6.3.5 避免常见错误 90 第二部分 ORACLE应用系统设计优化 91 第8章ORACLE数据库系统优化安装 91 §7.1 应用系统环境规划和Oracle系统安装考虑 91 §7.1.1 操作系统安装考虑 91 §7.1.2 Oracle系统安装考虑 92 §7.2 关于创建多个Oracle实例问题 93 §7.3 Oracle系统安装后的优化基础工作 94 §7.3.1 Oracle系统有关目录所有文件的保护 94 §7.3.2 避免新用户使用默认system系统表空间 94 §7.4 Oracle系统所在服务器的独立性 94 第9章 项目分析、设计与管理 94 §9.1 项目分析要点考虑 95 §9.1.1 对应用系统类型的认识 95 §9.1.2 软件项目计划 95 §9.1.3 开发环境资源的配置 96 §9.1.4 各种人员的招募要求 96 §9.1.5 开发组工作的开始 96 §9.2 应用系统运行环境分析 96 §9.2.1 数据库服务器性能的考虑 97 §9.2.2 数据库服务器硬盘空间的估计 97 §9.2.3 应用服务器的考虑 98 §9.2.4 网络带宽的考虑 98 §9.4 数据库逻辑设计 98 §9.4.1 系统表空间 98 §9.4.2 数据表空间和索引空间分开 99 §9.4.3 回滚段设置 99 §9.4.4 临时表空间设计规划 100 §9.4.5 数据文件和日志文件在不同磁盘上 101 §9.5 数据库物理设计 101 §9.5.1 定量估计 101 §9.5.2 表空间与数据文件 102 §9.5.3 物理设计原则 103 §9.5.4 数据库物理设计内容和步骤 103 §9.6 开发过程管理 104 §9.6.1 应用软件生命周期阶段的管理 105 §9.6.2 成功的三要素 106 §9.6.3 培植过程 106 §9.6.3.1 定义环境 107 §9.6.3.2 角色定义 107 §9.6.3.3 方案报告 107 §9.7 确定应用程序类型 108 §9.7.1 在线事务处理(OLTP) 108 §9.7.2 决策支持系统(DSS) 109 §9.7.3 多用途应用程序 109 §9.8 注册应用程序 109 §9.9 Oracle配置 110 §9.9.1 分布式系统 110 §9.9.2 多层系统 110 §9.9.3 Oracle并行服务器 110 §9.10 Oracle数据库增长的规划 111 §9.10.1 不同增长表的配置 111 §9.10.2 对增长表进行规划和分析 112 第10章 数据库结构设计要点 113 §10.1 分析阶段的对表的理解 113 §10.2 正确的主键字段的选择 113 §10.3 字段类型及长度的选择 113 §10.3.1 如果能用字符型就不要用数字型 114 §10.3.2 相互产生运算的数字型字段长度和精度要一致 114 §10.3.2 不要为了节省空间而将字段的长度缩小或拆开 115 §10.4 将LOB类型的字段与其它的类型分开 115 §10.5 采用具有编码的设计方法 115 §10.6 建立公共字典表 115 §10.7 哪种类型的表设为cache 方式 116 §10.8 数据表和索引分开原则 116 §10.9 是否采用簇和分区 116 §10.10 表和索引的空间预分配 116 §10.11 确定数据库对象存储大小 117 §10.11.1 非簇表的大小计算 117 §10.11.2 索引大小计算 119 §10.11.3 簇表的大小计算 120 §10.11.4 位图索引的大小计算 122 §10.12 应用类型设计考虑要点 122 §10.13 应用系统性能优化原则 123 §10.13.1 分而治之 123 §10.13.2 预分配,预支取,预编译 123 §10.13.3 筛选 124 §10.13.4 大量(bluk),块和批处理 124 §10.13.5 对应用适当的分段 124 §10.13.6 优化目标 124 §10.13.7 优化步骤和方法 125 §10.13.8 使用ORACLE 诊断工具 126 第三部分 ORACLE应用系统开发优化 128 第11章 诊断与调整工具- 128 §11.1 警告日志文件 128 §11.1.1 警告日志文件管理 128 §11.1.2 参考警告日志文件调整 128 §11.2 后台进程与跟踪文件 128 §11.3 用户跟踪文件 128 §11.4 动态性能视图 129 §11.5 UTLBSTAT和UTLESTAT 129 §11.6 STATSPACK 129 §11.7 Oracle等待事件 129 §11.8 Oracle诊断和调整包 129 第12章 优化SQL语句 130 §12.1 SQL语句的优化方法 130 §12.1.1 重新构造语句 130 §12.1.2 调整或使触发器无效 137 §12.1.3 重组数据 137 §12.2 优化目标 137 §12.2.1 优化序列SQL语句 137 §12.2.2 优化并行执行 138 §12.2.3 调整OLTP应用 138 §12.3 实际优化例子 139 §12.3.1 避免基于规则优化器技术 139 §12.3.2 索引代价 139 §12.3.3 分析统计数据 139 §12.3.4 避免复杂的表达式 142 §12.3.5 处理复杂的逻辑 143 §12.3.6 一般的SQL语句优化 143 §12.4 SQL语句优化技巧 144 §12.4.1 对所有SQL语句执行EXPLAIN_PLAN 145 §12.4.2 磁盘读和缓冲区获取 146 §12.4.3 判定式崩溃 146 §12.5 使用EXISTS和IN 148 §12.6 分离事务(Discrete Transactions ) 149 §12.7 测试SQL语句性能 151 §12.7.1 SQL_Trace实用工具 151 §12.7.2 TKPROF实用程序 151 §12.8 使用SQL_Trace和TKPROF 151 §12.8.1 设置跟踪初始化参数 152 §12.8.2 启用SQL_Trace实用工具 152 §12.8.3 用TKPROF格式化跟踪文件 153 §12.8.4 解释TKPROF输出文件 155 §12.8.5 解释计划(Explain Plan)策略 156 §12.8.6 AUTOTRACE 实用程序 157 第13章 数据访问方法 160 §13.1 使用索引的访问方法 161 §13.1.1 何时创建索引 161 §13.1.2 索引列和表达式的选择 161 §13.1.3 选择复合索引的主列 161 §13.1.4 要用可选择性索引 162 §13.1.5 测量索引的可选择性 162 §13.1.6 避免全表扫描 163 §13.1.7 编写避免使用索引的语句 163 §13.1.8 编写使用索引的语句 164 §13.1.9 重新构造索引 164 §13.1.10 压缩索引 165 §13.2 创建索引和使用索引 165 §13.2.1 使用函数索引 165 §13.2.2 使用位图索引- 166 §13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织表 166 §13.3 使用范围索引 166 §13.4 使用簇 - 167 §13.5 使用Hash 簇 - 168 §13.5.1 何时创建Hash 簇 168 §13.5.2 创建Hash 簇 168 §13.6 使用实体视图 - 169 §13.6.1 实体视图概念 169 §13.6.2 创建实体视图 169 §13.6.3 使用实体视图 169 §13.6.4 管理实体视图 169 第14章 优化器(Optimizer)简介 170 §14.1 Oracle优化器 170 §14.2 SQL处理体系结构 171 §14.2.1 解析程序 171 §14.2.2 优化程序 172 §14.2.3 行源程序产生器 172 §14.2.4 SQL执行 172 §14.3 EXPLAIN PLAN 172 §14.4 选择优化器路径及目标 172 §14.4.1 OPTIMIZER_MODE初始参数 173 §14.4.2 数据字典中的统计数据 173 §14.4.3 ALTER SESSION语句的OPTIMIZER_GOAL参数 174 §14.4.4 关于提示的改变目标 174 §14.5 基于代价优化器(CBO) 174 §14.5.1 CBO结构调整 175 §14.5.2 CBO需求 175 §14.5.3 使用CBO 176 §14.5.4 CBO访问路径 176 §14.6 基于规则(RBO)的优化程序 177 §14.6.1 RBO访问路径 178 §14.7 优化器操作 179 §14.7.1 可优化的SQL语句 180 §14.7.2 优化程序操作 180 §14.7.3 基于规则或基于代价优化方法 180 §14.8 优化连接* 181 §14.8.1 嵌套连接- 181 §14.8.2 合并连接- 183 第15章 使用优化器提示 183 §15.1 提示(Hint)概念 184 §15.1.1 提示的指定 184 §15.2 使用提示 185 §15.2.1 提示的指定 185 §15.2.1.1 ALL_ROWS 186 §15.2.1.2 FIRST_ROWS 186 §15.2.1.3 CHOOSE 186 §15.2.1.4 RULE 187 §15.2.2 关于访问方法的提示 187 §15.2.2.1 FULL 187 §15.2.2.2 ROWID 188 §15.2.2.3 CLUSTER 188 §15.2.2.3 HASH 188 §15.2.2.4 INDEX 188 §15.2.2.5 INDEX_ASC 189 §15.2.2.6 INDEX_COMBINE 189 §15.2.2.7 INDEX_JOIN 189 §15.2.2.8 INDEX_DESC 189 §15.2.2.9 INDEX_FFS 190 §15.2.2.10 NO_INDEX 190 §15.2.2.11 AND_EQUAL 190 §15.2.2.12 USE_CONCAT 190 §15.2.2.13 NO_EXPAND 190 §15.2.2.14 REWRITE 191 §15.2.2.15 NOWRITE 191 §15.2.3 关于连接次序的提示 191 §15.2.3.1 ORDERED 191 §15.2.3.2 STAR 191 第四部分 ORACLE系统调整 194 第16章 调整信息的来源 194 §16.1 警告日志文件 194 §16.1.1 警告日志文件信息 194 §16.1.2 管理警告日志文件 196 §16.2 后台、事件及用户跟踪文件 196 §16.2.1 后台跟踪文件 196 §16.2.2 事件跟踪 197 §16.2.3 用户跟踪文件 197 §16.2.4 管理跟踪文件 200 §16.3 性能调整视图 200 §16.3.1 常用性能优化视图V$_ 200 §16.3.2 常用性能优化视图DBA_ 201 §16.3.3 视图查询例子 201 §16.4 Oracle支持的调整脚本 202 §16.4.1 UTLBSTAT.SQL与UTLESTAT.SQL 202 §16.4.2 解释REPORT.TXT内容 203 §16.5 Oracle的STATSPACK 203 §16.6 图形性能调整工具 203 §16.6.1 Oracle 企业管理器/Oracle DBA 管理包 203 §16.6.2 OEM使用* 203 第17章 STATSPACK工具 204 §17.1 STATSPACK介绍 204 §17.1.1 STATSPACK与UTLBSTAT/UTLESTAT比较 204 §17.1.2 STATSPACK工作流程 204 §17.2 配置STATSPACK 205 §17.3 statspack安装 205 §17.3.1 交互安装STATSPACK 205 §17.3.2 批模式安装STATSPACK 206 §17.4 使用statspack 206 §17.4.1 取得STATSPACK快照 206 §17.4.2 自动进行统计搜集 207 §17.4.3 运行statspack性能报告 208 §17.4 删除statspack 209 §17.5 statspack支持的脚本和文档 209 第18章 动态性能视图与性能诊断 211 §18.1 当前会话状态视图 211 §18.2 计数和积累视图 211 §18.3 信息视图 212 §18.4 当前统计值与变化比率 213 §18.4.1 当前统计值与变化比率 213 §18.4.2 找出统计值的变化率 213 §18.5 有计划地调整系统的因子 214 §18.6 不足的CPU 214 §18.7 不足的内存 215 §18.8 I/O限制 215 §18.9 网络限制 215 §18.9 软件限制 216 第19章 调整内存分配 217 §19.1 理解内存分配要求 217 §19.2 监测内存分配问题 217 §19.3 调整操作系统内存需求 218 §19.4 调整Redo Log Buffer 219 §19.4.1观察Redo Log Buffer是否有竞争 219 §19.4.1.1 使用V$SYSSTAT 219 §19.4.1.2 使用V$SESSION_WAIT 221 §19.4.1.3 使用REPORT.TXT输出 222 §19.4.1.4 使用OEM监示Redo Log Buffer* 222 §19.4.1.5 使用V$SYSTEM_EVENT 223 §19.4.1.6 使用警告日志(Alert Log) 223 §19.4.2 调整Redo Log Buffer性能 223 §19.4.2.1 将Redo Log Buffer参数改大 223 §19.4.2.2 改善检查点效率 224 §19.4.2.3 加速归档处理 224 §19.4.2.4 减少重做日志产生 224 §19.5 调整共享池 225 §19.5.1 理解共享池的用途 225 §19.5.2 缓存语句的好处 225 §19.5.3 Shared Pool 部件 226 §19.5.4 测试Shared Pool 的性能 227 §19.5.5 用OEM测试Shared Pool 的性能- 231 §19.5.6 改善Shared Pool 的性能 231 §19.5.6.1 较大的Shared Pool 231 §19.5.6.2 给大的PL/SQL 语句一个空间 231 §19.5.6.3 在内存中保持PL/SQL 代码 232 §19.5.6.4 鼓励代码重用 233 §19.5.6.5 建立大的POOL 233 §19.6 调整数据缓冲区 234 §19.6.1 理解数据库缓冲区 234 §19.6.1.1 LRU列表 234 §19.6.1.2 脏(Dirty)列表 234 §19.6.1.3 用户服务器进程 235 §19.6.1.4 数据库写进程 235 §19.6.2 测试数据库缓冲区 235 §19.6.2.1 查询V$SYSSTAT 235 §19.6.2.2 使用V$SESS_IO和V$SESSION 236 §19.6.2.3 使用REPORT.TXT* 236 §19.6.2.4 使用OEM工具* 236 §19.6.3 改善数据库缓冲区性能* 236 §19.6.3.1 将参数改大些 236 §19.6.3.2 使用多个Buffer Pool 237 §19.6.3.3 将表缓存在内存中 242 第20章 调整物理I/O 243 §20.1 理解I/O问题 243 §20.1.1 调整 I/O: 自顶向下和自底向上 243 §20.1.2 分析 I/O需求 244 §20.2 调整数据文件I/O性能 245 §20.2.1 测试数据文件 I/O 245 §20.2.2 改善数据文件 I/O 246 §20.3 调整数据库写入器性能 248 §20.3.1 测试DBWR0 I/O 248 §20.3.2 改善DBWR0 I/O 250 §20.4 调整段的I/O 250 §20.4.1 理解 块I/O 251 §20.4.2 改善段块I/O 251 §20.5 调整checkpoint 和CKPT 的I/O 253 §20.6 调整归档及ARCO的I/O 253 §20.6.1 测量归档和ARCO I/O 254 §20.6.2 改善归档和ARCO I/O 255 §20.7 调整排序的I/O 256 §20.7.1 理解排序活动 256 §20.7.2 改善排序I/O 257 第21章 Oracle系统运行中的资源竞争 259 §21.1 理解锁存器竞争 259 §21.1.1 锁存器概念 259 §21.1.2 锁存器的类型 260 §21.2 检测锁存器竞争问题 260 §21.2.1 从V$LATCH中查询锁存器的竞争 261 §21.2.2 用STATSPACK报告锁存器的竞争 262 §21.3 减少锁存器竞争 262 §21.3.1 减少锁存器竞争的主要点 262 §21.3.2 共享池与库高速缓存锁存器 264 §21.3.3 减少重做日志缓冲区锁存器竞争 264 §21.3.3.1 检查重做日志竞争 268 §21.3.3.2 分析重做日志竞争 269 §21.3.3.3 减少锁存器的竞争 270 §21.3.4 减少对LRU锁存器的竞争 270 §21.4 减少自由列表的竞争 270 §21.4.1 检测free list是否存在竞争 271 §21.4.2 调整free list以减少竞争 272 §21.5 减少对并行服务器的竞争 273 §21.5.1 确定并行服务器存在竞争 273 §21.5.2 降低并行服务器竞争 273 第23章 各种锁和完整性 274 §22.1 锁的概念 274 §22.2 分析v$lock 277 §22.2.1 用lock table锁定表 278 §22.2.2 会话更新专用锁定表的行- 279 §22.2.3 一个会话试图更新另一个会话更新过的行 279 §22.2.4 显式锁下的并发例子- 280 §22.3 监控系统中的锁 281 §22.3.1 查询V$LOCK是否存在争用 282 §22.3.2 查询V$LOCKED_OBJECT是否存在争用 283 §22.3.3 查询DBA_WAITERS是否存在争用 284 §22.3.4 查询DBA_BLOCKERS是否存在争用 285 §22.4 管理锁的竞争 285 §22.4.1 查询产生锁的SQL语句 286 §22.4.2 怎样释放锁 286 §22.5程序死锁的产生与避免 287 §22.5.1 程序死锁原因 287 §22.5.2 避免程序死锁方法 288 §22.5.3 程序死锁例子 288 §22.5.4 避免程序死锁例子 290 第23章 调整回滚段竞争 292 §23.1 回滚段的用途 292 §23.2 监测回滚段的竞争 292 §23.3 调整回滚段的竞争 294 §23.3.1 最小化回滚段的扩展 294 §23.3.2 分布回滚段的I/O 294 §23.3.3 调整回滚段的存储参数 295 §23.3.4 使用较小的回滚段 295 §23.4 Oracle9i的自动撤消管理 296 §23.4.1 自动管理撤消 296 §23.4.2 自动撤消管理表空间的建立 296 §23.4.3 检测自动撤消管理表空间的使用 297 第25章 调整共享服务器 298 §24.1 查询调度程序视图监测竞争 299 §24.2 降低调度程序竞争 299 §24.3 降低对共享池的竞争 301 §24.4 确定最佳的调度程序和共享服务器数 303 第25章 操作系统与网络调整* 305 §25.1 理解操作系统性能问题 305 §25.1.1操作系统与硬件高速缓存 305 §25.1.2原始设备系统 305 §25.1.3进程调度程序 306 §25.1.4操作系统资源管理器 306 §25.2 检测操作系统性能问题 306 §25.3 解决操作系统性能问题- 307 §25.3.1调整服务器内存相关的参数 307 §25.3.2基于UNIX系统的执行 308 §25.3.3基于NT系统的执行 308 §25.3.4基于大型系统的执行 309 §25.4 网络系统性能问题 309 §25.4.1 网络的连接模式 309 §25.4.1.1 多线程服务配置 309 §25.4.1.2 注册检查 311 §25.4.1.3 预产生专用服务配置 312 §25.4.2 检测网络故障 313 §25.4.2.1 使用动态数据字典检测 313 §25.4.2.2 了解网络环境的速率 313 §25.4.3 解决网络故障 314 §25.4.3.1 分析瓶颈所在 314 §25.4.3.2 分析瓶颈信息 315 §25.4.3.3 调整阵列接口 316 §25.4.3.4 调整数据单元缓冲区大小 316 §25.4.3.5 在protocol.ora中加TCP.NODELAY 316 §25.4.3.6 使用连接管理器 316 第27章 数据库关闭/启动工作 317 §27.1 删除或归档旧的跟踪文件和跟踪日志 317 §27.2 重新命名警报日志 317 §27.3 产生创建控制文件命令* 318 §27.4 驻留程序包 318 §27.5 创建拥有者-对象的位图 319 §27.6 重新计算统计资料 320 §27.7 缩小扩展超过最佳值的回滚段* 320 第48章 调整实例恢复性能*(tuning 24) 321 §48.1 理解实例恢复* 321 §48.2 调整实例延迟及碰撞恢复* 321 §48.3 监示实例恢复* 321 §48.4 实例恢复阶段调整* 321 第49章 应用程序性能调整* 321 §49.1 在基表上创建索引 321 §49.1.1 何时创建B*树索引 321 §49.1.2何时创建位图树索引 322 §49.1.3何时创建逆关键字索引 322 §49.1.4何时不要建索引 322 §49.2 在select 语句上使用索引 323 §49.2.1评估索引的使用情况 323 §49.2.2避免不使用索引的SQL语句 323 §49.3 把具有大量数据I/O的处理放在服务器上 324 §49.4 在内存中保持PL/SQL 代码 324 §49.5 鼓励代码重用 325 §49.6 将表缓存在内存中 326 §49.7 了解SQL语句的速度差别 326 §49.8 在表结构设计和select语句中用decode 327 §49.9 将LOB类型单独存放 328 §49.10 分而治之 329 第50章 内存和CPU的优化 330 §50.1 应用类型 330 §50.1.1 oracle 如何响应OLTP数据访问请求 330 §50.1.2 oracle 如何响应批数据访问请求 330 §50.2 如何计算命中率 331 §50.3 影响命中率的因素 332 §50.3.1 字典表活动 332 §50.3.2 临时段的活动 332 §50.3.3 回滚段的活动 332 §50.3.4 索引活动 333 §50.3.5 表扫描 333 §50.3.6 OLTP和批应用类型 333 §50.4 内存和CPU的优化调整问题 334 §50.5 为应用选择目标命中率 334 §50.6 内存和CPU 的要求 335 第五部分 ORACLE系统高级用法介绍 340 第52章 安全管理+ 341 §52.1 用户验证 341 §52.1.1 数据库验证 341 §52.1.2 外部验证 341 §52.1.3 企业验证 341 §52.2 数据库权限管理 341 §52.2.1 理解安全角色 341 §52.2.2 理解管理 341 §52.2.3 数据库验证 341 §52.3 ORACLE 企业安全管理器 341 §52.4 监控数据库资产 341 §52.4.1 审计登录 341 §52.4.2 审计数据库操作 341 §52.4.3 审计数据库对象上的DML 341 §52.4.4 管理审计 341 §52.5 保护数据完整性 342 §52.6 Oracle 8I 因特网安全 342 §52.6.1 使用数字证书 342 §52.6.2 使用RADIUS协议的高级验证 342 §52.7 防火墙支持 342 §52.8 好的粒状存取控制 342 §52.9 数据库资源管理器 342 §52.10 硬件安全 342 §52.11 恢复丢失的数据 342 §52.11.1 操作系统备份 342 §52.11.2 逻辑备份 342 第53章 分布式数据库管理 342 §53.1 分布式数据库概念 343 §53.1.1 同质分布数据库 343 §53.1.2 异类分布数据库系统 344 §53.1.3 客户/服务器数据库结构 344 §53.2 数据库连接 344 §53.2.1 为什么使用数据库连接 344 §53.2.2 数据库连接中的全局名称 344 §53.2.3 数据库连接中的命名 345 §53.2.4 数据库连接中的类型 345 §53.3 分布数据库管理 346 §53.3.1 站点自治 346 §53.3.2 分布数据库安全 346 §53.3.3 审计数据库连接 347 §53.3.4 管理工具 347 §53.4 分布数据库中事务处理 348 §53.4.1 远程SQL语句 348 §53.4.2 分布SQL语句 349 §53.4.3 远程共享SQL语句和分布语句 349 §53.4.4 远程事务 349 §53.4.5 分布事务 350 §53.4.6 两阶段提交机制 350 §53.4.7 数据库连接名称的解析 350 §53.5 分布数据库应用开发 351 §53.5.1 分布数据库系统的透明性 351 §53.5.2 分布查询的优化 352 §53.6 民族语言的支持 352 §53.7 管理分布系统全局名称 352 §53.7.1 理解全局数据库名字版式 352 §53.7.2 确定全局数据库名字执行 353 §53.7.3 浏览全局数据库名 353 §53.7.4 在全局数据库名中改变域名 354 §53.7.5 改变全局数据库名 354 §53.8 建立数据库连接 357 §53.8.1 建立数据库连接的权限 357 §53.8.2 指定数据库连接类型 357 §53.8.3 指定连接用户 358 §53.9 建立共享数据库连接 359 §53.9.1 建立共享数据库连接 359 §53.9.2 管理数据库连接 360 §53.10 浏览数据库连接 361 §53.11 建立位置透明性 364 §53.12 分布事务 364 §53.13 设置分布事务初始化参数 364 §53.14 查看分布事务信息 365 §53.15 处理怀疑的事务 366 §53.16 手工处理处理怀疑的事务 366 第54章 复制管理- 367 §54.1 复制概念 367 §54.1.1 复制对象、组及站点 367 §54.1.2 复制环境类型 368 §54.1.3 复制环境管理工具 369 §54.2 主机概念与结构 370 §54.2.1 什么是主机复制 370 §54.2.1 主群组 371 §54.2.2 快照组 371 §54.3 传播的类型 371 §54.3.1 异步传播 371 §54.3.2 同步传播 371 §54.4 复制的类型 371 §54.4.1 行级复制 371 §54.4.2 串行传播 371 §54.4.3 并行传播 371 §54.4.4 过程化复制 371 §54.5 冲突解决 371 §54.5.1 冲突的类型 371 §54.5.2 避免冲突 371 §54.5.3 鉴别冲突 371 §54.5.4 解决冲突 371 §54.6 快照 371 §54.7 一些有用的工具 372 §54.8 ORACLE8 和ORACLE8I的新功能 372 §54.8.1 ORACLE8复制的新功能 372 §54.8.2 ORACLE8I复制的新功能 372 §54.9 小结 372 第56章 Oracle并行服务器安装与配置 373 §56.1 硬件环境概述 373 §56.2 Oracle并行服务器 374 §56.2.1 Oracle并行服务器组成 374 §56.2.2 Oracle动态并行执行 375 §56.3 Oracle并行服务器 375 §56.3.1 Oracle并行服务器概述 375 §56.3.2 Oracle并行服务器软件组成 376 §56.3.3 Oracle并行服务器安装概述 376 §56.3.3 数据库配置概述 377 §56.4 Oracle并行服务器安装前任务 377 §56.4.1 并行服务器节点硬件或软件环境需求 377 §56.4.2 企业管理器的硬件或软件环境需求 377 §56.4.3 共享磁盘子系统 378 §56.5 设置原始设备 378 §56.6 安装前步骤 381 §56.7 安装过程 382 §56.8 Oracle的安装配置 382 §56.9 监听器(listener.ora ) 383 §56.10 目录服务访问(ldap.ora ) 384 §56.11 Net服务名(tnsnames.ora ) 384 §56.12 PROFILE文件(SQLNET.ORA ) 386 §56.13 安装之后建立数据库 387 §56.13.1 用Oracle数据库配置助理建立数据库 387 §56.13.2 用手工建立数据库 388 §56.14 以并行模式启动立数据库 388 §56.15 确认实例在运行 389 §56.16 Oracle并行服务器客户端配置 389 §56.17 Oracle并行服务器参数文件 390 §56.18 配置恢复管理器 392 §56.19 为RMAN配置目录 392 §56.20 并行服务器管理结构 395 §56.21 并行实例的启动 395 §56.22 并行实例的关闭 396 第57章 并行环境应用设计 397 §57.1 分析应用 397 §57.1.1 只读的表 397 §57.1.2 随机的查询与修改 397 §57.1.3 插入、修改与删除 397 §57.1.4 建立逆序键索引 398 §57.1.5 应用分区技术 398 §57.2 并行环境的数据库设计技术 400 §57.2.1 数据库操作、块类型及访问控制 400 §57.2.2 全局缓冲区的一致性工作和块种类 400 §57.2.3 产生数据库对象参数建议 401 §57.2.4 索引问题 401 §57.2.5 使用序列号 401 §57.2.6 逻辑和物理数据库布局 402 §57.2.6 全局缓存锁分配 403 §57.3 并行缓存设置 403 §57.3.1 并行缓存管理锁的设置 403 §57.3.2 Oracle 如何给块分配锁 404 §57.4 并行服务器应用的调整- 405 §57.4.1 调整并行服务器概述 406 §57.4.2 统计并行服务器性能 406 §57.4.3 确定同步代价 407 §57.4.4 初始化并行执行参数 408 §57.4.5 普通参数的调整 409 §57.4.5.1 并行操作中资源限制的参数 409 §57.4.5.2 影响资源消耗的参数 411 §57.4.5.3 与I/O相关的参数 412 第58章 并行查询管理 414 §58.1 Oracle并行选项、管理及调整 414 §58.1.1 Oracle并行选项 414 §58.1.2 Oracle并行选项设置 414 §58.1.2.1 用户的限制设置 414 §58.1.2.2 分配查询服务器进程 415 §58.1.2.3 并行度及其设置 415 §58.1.2.4 关于提示和查询提示强行并行 417 §58.1.2.5 监视并行查询情况 417 §58.2 并行数据加载(SQL*Loader) 417 §58.3 并行恢复 418 §58.4 并行SQL执行 418 §58.5 可以并行的SQL操作 419 §58.6 理解并行DML 420 §58.7 并行创建数据库表和索引 420 §58.7.1 并行创建数据库表 421 §58.7.2 并行创建索引 422 §58.8 并行性能有关的视图 422 第60章 高级安全管理 423 §120.1 Oracle的高级安全 423 附录A 动态性能视图(V$) 423 附录B 初始化参数 513 附录C 基本概念解释 514 C.1 分页是什么?,如何避免分页?* 514 C.2 检查点是什么?* 514 C.3 什么是模式? 514 C.4 B树索引 514 C.5 位图索引* 515 C.6 Oracle的锁机制 515 C.6.1 自动锁和显式锁 515 C.6.2 锁的级别 516 C.6.3 DML锁 516 C.6.4 DDL锁 518 C.6.5 锁存器与内部锁(Latches and Internal Locks) 518 C.7 Oracle的哈希簇(HASH CLUSTER) 519 C.7.1 在Hash Cluster中数据是如何存放的 519 C.7.2 Hash 键值 521 C.7.3 Hash 函数 521 C.8 Oracle的嵌套表(Nested table) 523
教程非常不错,价值280元,绝对是干货 Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 IC MP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信号量 信号量
Java8新特性及实战视频教程完整版Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda 表达式可以使代码变的更加简洁紧凑。Java8实战视频-01让方法参数具备行为能力Java8实战视频-02Lambda表达式初探Java8实战视频-03Lambda语法精讲Java8实战视频-04Lambda使用深入解析Java8实战视频-05Lambda方法推导详细解析-上.wmvJava8实战视频-06Lambda方法推导详细解析-下Java8实战视频-07Stream入门及Stream在JVM中的线程表现Java8实战视频-08Stream知识点总结Stream源码阅读Java8实战视频-09如何创建Stream上集Java8实战视频-10如何创建Stream下集.wmvJava8实战视频-11Stream之filter,distinct,skip,limit,map,flatmap详细介绍Java8实战视频-12Stream之Find,Match,Reduce详细介绍Java8实战视频-13NumericStream的详细介绍以及和Stream之间的相互转换Java8实战视频-14Stream综合练习,熟练掌握API的用法Java8实战视频-15在Optional出现之前经常遇到的空指针异常.wmvJava8实战视频-16Optional的介绍以及API的详解Java8实战视频-17Optional之flatMap,综合练习,Optional源码剖析Java8实战视频-18初识Collector体会Collector的强大Java8实战视频-19Collector使用方法深入详细介绍-01Java8实战视频-20Collector使用方法深入详细介绍-02Java8实战视频-21Collector使用方法深入详细介绍-03.wmvJava8实战视频-22Collector使用方法深入详细介绍-04Java8实战视频-23Collector原理讲解,JDK自带Collector源码深度剖析Java8实战视频-24自定义Collector,结合Stream的使用详细介绍Java8实战视频-25Parallel Stream编程体验,充分利用多核机器加快计算速度Java8实战视频-26Fork Join框架实例深入讲解Java8实战视频-27Spliterator接口源码剖析以及自定义Spliterator实现一个Stream.wmvJava8实战视频-28Default方法的介绍和简单的例子Java8实战视频-29Default方法解决多重继承冲突的三大原则详细介绍Java8实战视频-30多线程Future设计模式原理详细介绍,并且实现一个Future程序Java8实战视频-31JDK自带Future,Callable,ExecutorService介绍Java8实战视频-32实现一个异步基于事件回调的Future程序.wmvJava8实战视频-33CompletableFuture用法入门介绍Java8实战视频-34CompletableFuture之supplyAsync详细介绍Java8实战视频-35CompletableFuture流水线工作,join多个异步任务详细讲解Java8实战视频-36CompletableFuture常用API的重点详解-上Java8实战视频-37CompletableFuture常用API的重点详解-下Java8实战视频-38JDK老DateAPI存在的问题,新的DateAPI之LocalDate用法及其介绍.wmvJava8实战视频-39New Date API之LocalTime,LocalDateTime,Instant,Duration,Period详细介绍Java8实战视频-40New Date API之format和parse介绍
Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户 /服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信
服务器出现大量time_wait是指在TCP连接断开后,服务器端口仍处于等待状态的情况。这可能会导致服务器资源的浪费,影响服务器的性能和可用性。以下是理解并解决这个问题的步骤: 首先,需要理解time_wait原因TCP连接的断开是一个多步骤的过程,在最后一个ACK报文发送后,服务器端口会进入time_wait状态一段时间,以确保在这段时间内没有延迟的报文重新出现。这是网络协议设计的一部分,用于确保数据传输的可靠性。 为了解决服务器出现大量time_wait的问题,可以采取以下措施: 1. 调整服务器参数:可以通过修改服务器操作系统的参数来调整time_wait状态的时间。例如,可以减少time_wait状态的持续时间,以释放服务器资源。具体的操作方法可以参考操作系统的文档或相关文档。 2. 加大服务器资源:如果服务器出现大量time_wait的问题,可能是服务器的资源(例如端口号)不足造成的。此时,可以考虑增加服务器的资源,例如扩大服务器的端口范围等。 3. 优化应用程序代码:服务器出现大量time_wait可能是应用程序代码设计不佳造成的。在应用程序中,可以优化代码,以减少TCP连接的数量和时间。例如,可以使用连接池来重用连接,或者调整连接关闭的时机。 4. 负载均衡和故障转移:如果服务器经常出现大量time_wait,可能是由于服务器负载过高或单点故障引起的。此时,可以考虑使用负载均衡和故障转移技术来分散流量和提高服务器的可用性,从而减少time_wait的数量。 总之,彻底理解并解决服务器出现大量time_wait的问题需要对网络协议、服务器参数和应用程序代码等方面有一定的了解。通过调整参数、加大服务器资源、优化代码以及使用负载均衡和故障转移等技术,可以有效地减少time_wait的数量,提高服务器的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值