Browse Source

内存优化

刘河 6 years ago
parent
commit
53e57ea70d
3 changed files with 10 additions and 18 deletions
  1. 2 6
      README.md
  2. 5 4
      utils/util.go
  3. 3 8
      web/views/index/index.html

+ 2 - 6
README.md

@@ -6,7 +6,7 @@ easyProxy是一款轻量级、高性能、功能最为强大的**内网穿透**
 目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
 
 
-支持客户端与服务端连接中断自动重连,多路传输,大大的提高请求处理速度,go语言编写,无第三方依赖。
+支持客户端与服务端连接中断自动重连,多路传输,大大的提高请求处理速度,go语言编写,无第三方依赖,各个平台都已经编译在release中,普通个人场景下,内存使用量在10M以下
 
 ## 背景
 ![image](https://github.com/cnlh/easyProxy/blob/master/image/web.png?raw=true)
@@ -185,11 +185,7 @@ server {
     listen 80;
     server_name a.ourcauc.com;
     location / {
-            proxy_set_header X-Real-IP $remote_addr;
-            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-            proxy_set_header Host  $http_host;
-            proxy_set_header X-Nginx-Proxy true;
-            proxy_set_header Connection "";
+            #其他配置,例如ssl
             proxy_pass http://127.0.0.1:8024;
         }
 }

+ 5 - 4
utils/util.go

@@ -147,15 +147,14 @@ func GetIntNoerrByStr(str string) int {
 
 
 // io.copy的优化版,读取buffer长度原为32*1024,与snappy不同,导致读取出的内容存在差异,不利于解密,特此修改
-//废除
+//内存优化 用到pool,快速回收
 func copyBuffer(dst io.Writer, src io.Reader) (written int64, err error) {
-	//TODO 回收问题
-	buf := bufPoolCopy.Get().([]byte)
-	defer bufPoolCopy.Put(buf)
 	for {
+		buf := bufPoolCopy.Get().([]byte)
 		nr, er := src.Read(buf)
 		if nr > 0 {
 			nw, ew := dst.Write(buf[0:nr])
+			bufPoolCopy.Put(buf)
 			if nw > 0 {
 				written += int64(nw)
 			}
@@ -167,6 +166,8 @@ func copyBuffer(dst io.Writer, src io.Reader) (written int64, err error) {
 				err = io.ErrShortWrite
 				break
 			}
+		}else {
+			bufPoolCopy.Put(buf)
 		}
 		if er != nil {
 			if er != io.EOF {

+ 3 - 8
web/views/index/index.html

@@ -36,11 +36,6 @@
                         server_name a.proxy.com b.proxy.com;#也可以是泛解析*.proxy.com
                         #ssl等配置
                         <b>location / {
-                            proxy_set_header X-Real-IP $remote_addr;
-                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-                            proxy_set_header Host $http_host;
-                            proxy_set_header X-Nginx-Proxy true;
-                            proxy_set_header Connection "";
                             proxy_pass http://127.0.0.1:{{.proxyPort}};
                         }</b>
                     }
@@ -140,10 +135,10 @@
         <div class="tile">
             <p>
                 <b>多客户端模式:</b>
-            <li>服务端启动:./easyProxy -mode=webServer -tcpport=8284</li>
-            <li>客户端启动:./easyProxy -server={{.ip}}:{{.p}} -vkey=xxx(见管理列表的客户端启动模式)</li>
+            <li>服务端启动:./proxy_server</li>
+            <li>客户端启动:./proxy_client -server={{.ip}}:{{.p}} -vkey=xxx(见管理列表的客户端启动模式)</li>
             </p>
-            <p><b>支持客户端同时建立多条隧道,例如单个通道时命令为./easyProxy -server={{.ip}}:{{.p}} -vkey=ccc,如果要支持另外一个隧道,则对应的执行命令为./easyProxy
+            <p><b>支持客户端同时建立多条隧道,例如单个通道时命令为./proxy_client -server={{.ip}}:{{.p}} -vkey=ccc,如果要支持另外一个隧道,则对应的执行命令为./proxy_client
                 -server={{.ip}}:{{.p}} -vkey=ccc,ddd,即用逗号分隔开多个vkey,适用于所有模式!</b></p>
         </div>
     </div>