• Select -- synchronius I/O multiplexing

    • select, FS_SET,FD_CLR,FD_ISSET,FD_ZERO
 #include <sys/time.h>
#include <sys/types.h>``
#include <unistd.h> int select(int nfds,fd_set *readfds, fd_set *writefds,fd_set exceptfds,struct timeval* timeout); void FD_CLR(int fd, fd_set *set);
void FD_ISSET(int fd,fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
  • poll:

    • #include<poll.h>
    • int poll(struct pollfd *fds, nfds_t nfds,int timeout);

struct pollfd{

  int fd;

  short events;

  short revents;

};

(一)如果客户端关闭套接字close

而服务器调用一次write服务器就会收到一个RST segment(TCP传输层)

如果服务器端再次调用了write,这个时候就会产生SIGPIPE信号,如果不忽略该信号则会导致整个进程退出。

解决办法:signal(SIGPIPE, SIG_IGN);

(二):TIME_WAIT状态对大并发服务器的影响:

应该尽可能在服务器端避免出现TIME_WAIT状态

如果服务器端主动断开连接(先于客户端调动close),那服务器端就会进入TIME_WAIT状态,这样在一定时间内内核会保持一些资源,使得服务器的并发性降低。

解决办法:让客户端主动断开连接,这样就把TIME_WAIT状态分散到大量的客户端,如果客户端不活跃了,一些客户端不断开连接,这样就会占用服务器的连接资源。所以服务器需要有机制来剔除不活跃的连接close

最新文章

  1. css中选择器的使用技巧
  2. Nginx内置变量以及日志格式变量参数详解
  3. javascript 日期转换为中文
  4. MySQL存储过程、函数和游标
  5. Oracle_表数据拆分与合并
  6. (转)C++中extern “C”含义深层探索
  7. SQL 局域网远程备份
  8. Qt新建线程的方法(有QRunnable,QThreadPool,moveToThread和QtConcurrent的例子)
  9. C#-默认显示前列-ShinePans
  10. python 函数递归
  11. idea基本使用1
  12. Shell第一篇:BASH 环境
  13. server client 套接字连接
  14. jsp、freemarker、velocity、thymeleaf页面方案分析
  15. prometheus简介
  16. Polly公共处理 -重试(Retry)
  17. [php排错] Forbidden You don&#39;t have permission to access / on this server.
  18. spring :概述
  19. Ajax前端调后台方法
  20. java编程如何实现2017-01-16 22:28:26.0这样的时间数据,转换成2017:01:16:22:28:26这样的时间数据

热门文章

  1. oracle-null和默认值
  2. HI35XX NVR
  3. 第2节 常用软件安装-JDK和Tomcat
  4. TypeScript 之 tsconfig.json
  5. TypeScript 之 函数
  6. 手动制作openstack windows镜像
  7. MySQL 绿色版安装Window 系统
  8. c166 -div
  9. dojo:如何显示ListBox风格的选择框
  10.  WPF 控件总结