
Procedure
Call
Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
目录
基本简介
协议结构
工作原理
RPC
OVER
>根据个人经验来判断,通常对方的telnet架构和协议是打开的,只是对方电脑设置了防火墙,才导致你的电脑连接输入用户密码时句柄无效。
另外,你试试用小键盘的enter键替代大回车键。1lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
1# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
2 131 24204
3 57 24244
4 57 24231
5 56 24264
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
1ps -aef|grep 24204
2mysql 24204 24162 99 16:15 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
1ulimit -HSn 4096
以
上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响
应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,,可以修改 /etc/profile
把上面命令加到最后。(findsun提出的办法比较合理)
/////////////////////////////////////////////////////////////////////////////
在 Linux下面部署应用的时候,有时候会遇上Socket/File: Can't open so many
files的问题,其实Linux是有文件句柄限制的(就像WinXP?),而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到
这个数量,因此我们需要把这个值改大一些。
大概知道ulimit这个命令是相关的,上Google搜索了一下,大多数说的很含糊,也没有统一说一下,经过两个小时看了不少文章终于弄清楚ulimit相关的一些配置问题。
我们可以用ulimit -a来查看所有限制值,我只关心文件句柄数量的问题
open files (-n) 1024
这个就是限制数量
这里,有很多ulimit的文章都说的很含糊,究竟这个1024是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。
1、这个限制是针对单个程序的限制
2、这个限制不会改变之前已经运行了的程序的限制
3、对这个值的修改,退出了当前的shell就会消失
比如说,我先运行了一个程序A,然后通过ulimit修改了限制为2048,然后运行B,然后退出了shell再登录,然后运行C。那就只有B可以打开2048个句柄。
如果我们需要改变整体的限制值,或者我们运行的程序是系统启动的,应该怎么处理呢
其中一个方法,是想ulimit修改命令放入/etc/profile里面,但是这个做法并不好
正确的做法,应该是修改/etc/security/limitsconf
里面有很详细的注释,比如
soft nofile 2048
hard nofile 32768
就可以将文件句柄限制统一改成软2048,硬32768
这里涉及另外一个问题,什么是软限制,什么是硬限制
硬限制是实际的限制,而软限制,是warnning限制,只会做出warning
其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果修改的时候没有加上的话,就是两个一起改
配置文件最前面的一位是domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
修改了,重新登录用ulimit一开就立刻生效了,不过之前启动过的程序要重新启动才能使用新的值。我用的是CentOS,似乎有些系统需要重启才能生效。
ulimit其实就是对单一程序的限制
那系统总限制呢
其实是在这里,/proc/sys/fs/file-max
可以通过cat查看目前的值,echo来立刻修改
另外还有一个,/proc/sys/fs/file-nr
只读,可以看到整个系统目前使用的文件句柄数量
查找文件句柄问题的时候,还有一个很实用的程序lsof
可以很方便看到某个进程开了那些句柄
也可以看到某个文件/目录被什么进程占用了。实现聊天功能必须的组件:
类似QQ的聊天,发送信息,这里主要用到的组件是:服务器、客户
用易语言编写局域网聊天小软件(需要两个程序:服务器端和客户端):
这里讲的例子是所有用户发送数据的时候经过服务器,再由服务器转发出去,是群聊的一种方式。
首先做下两个程序的界面:
服务器端需要一个编辑框来显示所有发来的消息
客户端需要有发送按钮、输入内容的编辑框和显示别的用户发来消息的编辑框
客户端界面预览
服务器端界面预览
服务端详解:
点击“服务器”组件,点击左侧“属性”页,可编辑服务端的端口,默认为19730,和其他软件端口不冲突就行。
接下来写具体的代码,首先写服务器端的代码:双击“服务器”组件,在“_服务器1_数据到达”事件下编写解读内容和显示内容代码:
获取服务器收到的内容并解读代码:到文本 (服务器1取回数据 ())
记录收到的内容代码:
注意:这里的编辑框要设置为多行显示,并显示滚动条。
客户端详解:
客户端是需要做到两个:连接服务端、发送消息到服务端,所以要先写连接服务端代码,双击客户端“_启动窗口”,写代码:
客户端连接服务器
写了连接但是是否连接成功,这又需要判断一下了,添加个变量,客户1连接看提示返回结果为逻辑型,可写代码(注意:这里的连接需要服务器运行的情况下才能连接,不运行是无法连接成功的):
连接成功后,就要写发送信息的代码了,双击“发送信息”按钮,写代码:
客户端发送信息
最后总结一下思路:
服务端运行开启端口,并记录收到的消息
客户端连接服务端并发送消息先说说你的服务器配置吧。
再检查一下机箱的温度,是不是CPU热度过高。
你再想办法把2003的补丁都打上。
并且告诉你,你的配置可能算不上很专业的服务器。属于家用机。呵呵。
如果是raid0的硬盘,2G内存,换至强CPU,再有个100M带宽,应该会好很多。
我感觉只要还是ISP带宽不够吧。
拨号 *** 连接的数目取决于您允许同时访问的用户的数目。默认情况下,如果您运行的是本文描述的步骤,则允许 128 个连接。若要更改同时连接的数目,请按照下列步骤 *** 作:
1 单击开始,指向管理工具,然后单击“路由和远程访问”。
2 双击服务器对象,右击端口,然后单击属性。
3 在端口属性对话框中,单击 WAN 微型端口 (PPTP),然后单击配置。
4 在最多端口数框中,键入要允许的 *** 连接的数目。
5 单击确定,再次单击确定,然后关闭“路由和远程访问”。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)