运行内存24g为什么只能用15g

2024-09-15 13:55:06问答浏览:9564次

最新回答:可以通过以下方法解决问题:

我要提问

登录后回复

2 个回答

  • 溥叔
    种叔淼
    如何实现单服务器300万个连接的理论上是完全可以实现的。
    (以下参考值均在Linux平台)
    1单个Linux进程可以维的连接数(fd)的理论值是通过下行设置的。-a,或者在服务器setting()中使用setrlimit,具体最大值是多少?我看到我的64位机器的值为64位,所以我认为理论上是2^64-1。不过,几百万不是问题。
    2TCP连接数。因为是服务器端,所以不需要向系统申请临时端口,只占用fd资源。因此,tcp连接数不受限。
    3如果我们为每个连接(fd)分配5k字节(应该足够了,只需存储一些用户信息等),保存连接当然会消耗内存。即5k*3000000=15G。内存有24G,应该够用了。
    ==========================================
    下面我们来说说多消息、异步、非阻塞循环。
    我们先来谈谈异步和非阻塞。我认为这两个是同一个概念。它们都指的是异步和非阻塞IO。
    1如果是异步+非阻塞,Linux上应该使用epoll。
    简单来说,异步就是基于事件的读写,它同时监听所有的tcp连接(fd),当有事件(read、write、error)时,返回一个连接事件的集合,然后处理该集合中需要处理的连接事件。这是基于事件的异步IO。
    非阻塞。收到带有事件的tcp连接后,一一读取(写入)。单独来说,对于要读取的fd来说,数据实际上已经在OS的tcpbuffer中了,读取完就直接返回,CPU不等待。(返回EAGAIN实际上包含多次memcpy用于要写入的连接,数据实际上写入OS的tcpbuffer直到满)。。它不会等待对方发送ACK就返回。这样一来,其实这里的CPU基本上只进行一些memcpy作。。即使数十万个连接上同时发生事件,也会立即处理。。。然后,CPU等待异步io(epoll_wait())。
    当然,这里要充分利用多核,而且最好将io线程和worker线程分开。
    2.多种消息传递情况。。这一定是他们的内在观念。我个的猜测是异步消息协议。
    例如,传统的TCP连接是一个查询和一个响应,HTTP也是如此。
    赞97回复举报
  • 亢叔瑞
    开伯壁
    win764舰旗版多大不足的。旗舰需要大量的容量。如果楼主安装后删除系统文件和不必要的系统功能的话,也就15G左右。如果他只是安装而不优化的话我用的电脑大概是18-24G左右。是C。安装的60G磁盘分区是顶级版本。安装后接近25G。更新后,W7更新的功能和文件基本都是30G。包括几个文件夹文件并存储一些游戏图像。项目,60G现在只有17G。这仍然定期清洁。如果不清理的话可能会更多。
    赞91回复举报
我也是有底线的人~
点击加载更多

热门新闻