这篇文章主要介绍了Win2008 R2 WEB 服务器安全设置指南之修改3389端口与更新补丁,需要的朋友可以参考下 3389端口是指windows系统中的远程桌面端口,可以使用它本管理远程计算机,就像操作本地的电脑一样,但是也容易被一些黑客利用,所以对于这个端口我必须要修改,且必须在安装完系统后就马上修改它。 随着云主机的普及和微软的大力更新,用windows server 2008 R2作为web服务器的人越来越多,而其强大的性能和可操作性得到了好评。连卖win2008的虚拟主机商也多起来了,所以今天我来讲讲我是怎么设置Win2008服务器安全的,拙见希望能帮到大家。一起远离肉鸡吧。。。 千里之行始于足下,你得有一台安装有Windows Server 2008 r2操作系统的服务器,不然只是纸上谈兵。推荐天翼云、阿里云、腾讯云,可以先看下国内云主机比较 天翼云/阿里云/腾讯云简单了解一下,我目前正在使用的是天翼云主机。如果你暂时还不想买主机,那就在本地安装一个虚拟机先练手。 好了,主机有了,那主机IP、用户名、密码也搞到了吧。好了,打开Win7或Win8里的远程桌面连接功能,如下图所示: 在计算机一栏写入 主机IP 地址,点 连接,进入下一页, 我这里直接就把系统用户给显示出来了,如果你的用户不是administrator,则点下面的 使用其它帐户即可。我的操作电脑系统是Win8.1,所以直接在这里就可以输入密码了,如果你的系统是WinXP的话,密码框在系统登录界面才能输入。在密码栏输入密码确定,如果是在自己个人电脑上使用,则勾选下方的 “记住我的凭据”以方便下次登录,如果是在公共电脑上操作,不建议勾选。为了安全起见,不要在网吧、咖啡厅等公共场所的电脑上做远程连接操作。 显示常用桌面图标 好了,确定后看到了Windows Server 2008 R2的经典桌面了吧。桌面上只有一个回收站的图标,够简洁的。虽然简洁,但是基本的图标也没有,对于用惯了Windows的人来说真的有点不习惯。那好,我们把传统的几个桌面图标先显示出来吧。虽然Win2008 r2和Win7是同一个内核,但是桌面和服务器的不同环境,所以Win2008 r2的桌面右键功能做得很简单,里面并没有Win7的个性化设置功能。所以我们要换一个方法来显示桌面图标。 点击开始按钮,在搜索框里输入"ico", 找到其中的一项“显示或隐藏桌面上的通用图标”点击, 我这里选择了所有图标,你可以根据个人习惯选择。 修改远程桌面连接端口 接下来不要急着装软件,安全的第一要点就是更改远程连接的默认端口3389,按Win+R,输入regedit,找开注册表,进入[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp],右侧找到PortNamber,双击,默认显示的是十六进制数据d3d,点击选择十进制后变为3389,这个就是远程连接的端口,修改它就是修改远程连接的端口,如把它修改为8579,确定保存。 再进入[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tenninal Server\WinStations\RDP-Tcp],同里修改PortNamber的值为8579,保存并关闭注册表。 经过上面二步,远程连接的端口已经在注册表里修改好了,但是这时千万不要重新启动服务器,不然你将自己关在外面了。 接着上面的步骤,打开系统自带的Windows防火墙,进入高级设置,进入“入站规则”,点击“新建规则”,规则类型选择“端口”, 下一步,选择"TCP",指定端口处填上面在注册表里的修改好的端器,我这里是8579, 下一步,连接指定条件这里选择“允许连接”。 下一步,作用域一般都全选, 下一步,为这条规则设置一个名称以方便记忆,并设置一个简单的描述。点“完成”保存以上设置。这样这条规则就生效了。 新的规则已经设置好了,再检查下前面的每一步设置是否正确,确定无误后重新启动服务器。 重新启动远程桌面连接,在IP地址后加上设置的新端口号, 只要前面的设置无误,这里应该能正常连接到服务器。 登录到服务器后,将系统自带的远程连接规则给禁用或删除,因为它已经不起作用了。找到“远程桌面(TCP-In)”,右击禁用。 最后一步,进一步提高远程桌面连接的安全性,设置“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”,这将只有Win Vista以上的系统才能连接到服务器。 等有机会,再写一篇基于IPsec的远程桌面加固。 更新系统补丁 补丁更新就比较简单了,直接打开Windows Update 更新即可。 把自动更新给打开,并且设置一下自动安装的时间,一般选在零晨更新补丁。 至此我们可以在服务器上安装常用的软件了,如iis、mssql、asp.net、php等。 以上就是Win2008 R2 WEB服务器安全设置指南之如何修改3389端口与更新补丁的具体详解的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了Win2008 R2下配制负载均衡方法(图文简洁版),需要的朋友可以参考下 两台web 服务器,操作系统是Windows Server 2008 R2,申请三个IP地址及要做负载平衡的域名(www.test.cn),其中一个IP地址为虚拟IP地址,另外两个分别配置在两台服务器上,例: 虚拟IP: 11.1.6.13 两台的地址分别为11.1.6.11, 11.1.6.12两台服务须安装的内容如下: 服务器(11.1.6.11): 1. 安装负载均衡服务 2. 在此服务器上配制负载均衡操作(以下以此台服务器为例) 服务器(11.1.6.12):1. 安装负载均衡服务 负载平衡种类: 1。同一台机子打开不同页面时连接的服务器都不同(存在Session共享问题) 2. 一台机子连接服务器后就不会转到另一台服务器(无Session共享问题) 以下以第二种方式为例 安装服务 分别在服务器(11.1.6.11, 11.1.6.12) 上安装此服务,以其中一台服务器为例在开始=>服务器管理器如下图 点击右边的添加功能进入找到“远程服务器管理工具”—>“网络负载平衡工具”勾选筛选框点击安装, 以下图为安装成功后的图 新建群集s 在完成以上的服务安装后, 在开始->网络负载平衡管理器(以11.1.6.11服务器为例) 打开管理器后选中“网络负载平衡群集”项点击鼠标右键选择“新建群集” 弹出“新群群”页面如下图所示 如上图双击上图的“本地连接” 弹出另一界面时按默认选项点击“下一步”进入“新群集”页面如下图 输入群集的IP地址及子网掩码后点击“确定”后返回群集IP地址页面点击“下一步”后进入“群集参数”页面如下图 输入“完整Internet名称”框中的域名(www.test.cn)选择“单播”模式后点击“下一步”进入“端口规则”设置页面如下图 选中现有的端口规则行点击“编辑”弹出端口规则编辑页面后按如下设置参数 之后一直点击"完成"后就装完一台了如图: 有此添加另的台的集群如下图: 在添加第二台时在主机输入框里有输入IP(11.1.6.12)时点击连接时有时会失败所以 此时在“主机”框中输入另一台服务器(10.0.6.14)的“机器名称”点击“连接” 接下来重复(11.1.6.11)的过程 在二台机子都添加完成后 如图所示 可以在两台分别服务部署测试网面分别在两台不同的电脑上打开(www.test.cn)就可以看到连接不同的服务器 以上就是Win2008 负载均衡在R2下配制的简单方法介绍(图)的详细内容,更多请关注学派吧其它相关文章!
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
这篇文章主要介绍了win2008 R2 WEB 服务器安全设置指南之组策略与用户设置,需要的朋友可以参考下 通过优化设置组策略、对系统默认的管理员、用户进行重命名、创建陷阱帐户等措施来提高系统安全性。 接上篇,我们已经改好了远程连接端口,已经能拒绝一部份攻击了,但是这些设置还远远不够。在做以下安全时,必须确保你的服务器软件已经全部配置完毕,并且能正常使用,不然如果在安全设置后再安装软件的话,有可能会安装失败或发生其它错误,导致环境配置失败。 密码策略 系统密码的强弱直接关系到系统的安全,如果你的密码太简单,万一你的远程连接端口被扫到,那破解你的密码就是分分钟钟后了。所以,我们的系统密码必须要设置一个符合安全性要求的密码,如使用大小写英文、数字、特殊符号、长度不小于6位等措施来加强密码安全性。在Windows 2008以上系统中,系统提供了一个“密码策略”的设置,我们来设置它,先进入“本地安全策略”, 依次打开 "安全设置"—–"帐户策略"—–"密码策略"—–密码必须符合复杂性要求,启用. 审核策略 审核策略的作用就是万一有恶意用户在破解你的密码、登录你的系统,或者修改你的系统等事件,你可以及早发现并处理。 默认都是无审核,我们必须修改它,如下是我修改的审核策略, 己基本能捕捉所需信息,我们只要分析这些产生的日志,就能发现问题所在。 用户权限分配 这里主要是限制哪些用户可以使用远程连接登录到服务器,默认是Administrators组和Remote Desktop Users组,这二个组的成员都可以远程登录到服务器,而我们一般作为WEB服务器,用户不会太多,可能就只有一个管理员,所以就没必要指定组,直接指定用户就可以了。 修改系统用户和组 1、对系统默认用户名和用户组进行重命名,这里分二步。 ⑴、重命名默认管理员administrator和来宾帐户,如我就将administrator重命名为wobushiad,将guest重命名为wobushiguest, 以后登录服务器就要使用修改后的用户名wobushiad来登录。 ⑵、新建一个名为administrator,隶属于Guests组的用户,设置一个超级复杂的密码(在记事本里打一串字符包括大小写、数字、特殊符号复制进去,你自己无需记住此密码),并禁用帐户。这个帐户是一个陷阱帐户,我们自己并不会使用此帐户。 再修改默认管理员组administrators和Guest组, 安全选项 交互式登录: 不显示最后的用户名,启用 网络访问:不允许SAM帐户和共享的匿名枚举,启用 网络访问:不允许存储网络身份验证的密码和凭据,启用 网络访问:可远程访问的注册表路径,清空 网络访问:可远程访问的注册表路径和子路径,清空 以上就是win2008 R2 WEB服务器安全设置指南之组策略与用户设置详解(图)的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了win2008 r2安装SQL SERVER 2008 R2 不能打开1433端口设置方法,需要的朋友可以参考下 服务器:WINDOWS SERVER 2008 R2 SQL:SQL SERVER 2008 R2 背景:同一个公司同一个局域网 网络可以ping通 但是不能连接服务器数据库 提示错误1326 前期设置: 经过前期设置都不行 telnet localhost 1433还是失败 后期设置: OK 到现在成功了。 以上就是win2008R2安装SQL SERVER 2008 R2不能打开1433端口的设置方法的图文详解的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了Win2008 R2 WEB 服务器安全设置指南之文件夹权限设置技巧,需要的朋友可以参考下 通过控制文件夹权限来提高站点的安全性。 这一篇权限设置包括二个方面,一个是系统目录、盘符的权限,一个是应用程序的上传文件夹权限设置。 系统目录 确保所有盘符都是NTFS格式,如果不是,可以用命令 convert d:/fs:ntfs 转换为NTFS格式。 所有磁盘根目录只给system和administrators权限,其它删除。 其中系统盘符会有几个提示,直接确定就可以了。在做这步操作之前,你的运行环境软件必须都安装好以后才能做。不然可能会导致软件安装错误,记住一点所有安全性的操作设置都必须在软件安装完以后才能进行。 站点目录 每个网站对应一个目录,并为这个网站目录加上IUSR和IIS_IUSRS权限,都只给“列出文件夹内容”和“读取”权限。 例如我在D盘根目录下创建了一个wwwroot的目录,再在里面创建了一个blog.postcha.com的目录,这个目录里面放的是我的网站程序。其中wwwroot只要继存d盘的权限即可,而blog.postcha.com这个目录,我们需要再添加二个权限,即IUSR和IIS_IUSRS。 wwwroot权限: 站点目录权限: 一般的网站都有上传文件、图片功能,而用户上传的文件都是不可信的。所以还要对上传目录作单独设置。上传目录还需要给IIS_IUSRS组再添加“修改”、“写入”权限。 经过上面这样设置承在一个执行权限,一旦用户上传了恶意文件,我们的服务器就沦陷了,但是我们这里又不能不给,所以我们还要配合IIS来再设置一下。 在iis7以上版本里,这个设置非常的方便。打开IIS管理器,找到站点,选中上传目录,在中间栏IIS下双击打开“处理程序映射”,再选择“编辑功能权限”,把“脚本”前面的勾掉就可以了。 好了,我们打开upload文件夹看一下,是不是多了一个web.config。 web.config里的内容如下: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers accessPolicy="Read" /> </system.webServer> </configuration> 意思是upload目录下的所有文件(包括所有子文件夹下的)将只有只读权限。这样用户即使上传了恶意文件,也发挥不了作用。 <handlers accessPolicy="Read" />的取值可以为“Read, Execute, Script”,分别表示“只读、执行、脚本”。 每个网站程序的功能不同,设置也各不相同。最少的权限就是最大的安全。 以上就是Win2008 R2 WEB服务器安全设置指南之文件夹权限设置技巧的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了win2008 R2与sql 2008运行asp的时候速度缓慢的解决方法,需要的朋友可以参考下 在以SQL Server 2005数据库为后台的ASP网站访问速度慢,情况如下:一个服务器上的两个ASP网站,一个访问很快,一个很慢。 原因排查的思路与步骤: 首先在我电脑上依次打开这两个网站,一个两三秒就打开了,另一个需要10秒钟。看来问题情况属实; 登陆到服务器,在服务器本地的IIS里分别打开这两个网站,结果还是一个快一个慢,排除是DNS解析时间和网络造成的影响; 打开两个网站程序的首页ASP文件,发现访问快的网站没有数据库查询,访问慢的网站查询了数据库。由于程序里的数据库查询语句也很简单,排除了程序和数据库查询语句的问题,最后将问题定位到数据库SQL Server上; 打开SQL Server 2005 上面就一个数据库,随便在SQL Server Management Studio上执行了两个复杂点的查询语句,速度很快,感觉不像是数据库查询速度的问题。 系统CPU、内存负载都不高。实在找不到原因了。就打开命令提示符,用netstat-ano检查了下网络连接。发现只有sqlserver的1434端口在监听,竟然没有sqlserver的1433端口在监听和连接,但是没有监听和连接网站为何却能访问。想着是否sqlserver修改了监听端口了。 打开SQL Server2005的SQL Server 配置管理器SQL Server 2005 网络配置->MSSQLSERVER的协议->TCP/IP ,发现TCP/IP竟然是禁用的,协议里只开启了Shared Memory 。属性里面设置的监听端口倒是默认的1433.于是将TCP/IP启用。重启了SQL Server服务后打开网站速度就很快了。 问题算是解决了。原因就是由于没有开启SQL Server 里的TCP/IP协议,使用了Shared Memory的方式连接数据库,所以造成网站访问很慢。 下面是其他网友的补充方法: 最近碰到一台WEB服务器硬盘出现故障,又因服务器运行了10年便将WEB服务更换到一台新的服务器上,但迁移后出现了各种问题,现将问题和解决方法总结一下: Windows2003+asp+sqlserver2000 新WEB服务器: Windows2008R2+asp+SQL Server2008 网站及数据库全部迁移过来后打开首页、内容页、后台都正常,但发现一个文件签收的页面打开速度非常慢,有时打不开。 查看了下代码一切正常找不到原因,感觉像是数据库查询时的问题,然后百度一下,说是数据库使用了内存共享连接模式,于是将数据库更换为TCP连接模式,这下能打开了,但是还是慢,大概需要5-8秒。继续在网上寻找解决方法,有说是数据库查询后没有关闭,各种方法都尝试过了,最后一篇文章短短几句话让我解决了问题,原因是数据库连接语句不对。 原有的连接语句是: Provider=Sqloledb;User ID=数据库帐号;Password=数据库密码;InitialCatalog=数据库名;Data Source=数据库IP; 该语句在原有服务器下没有任何问题,但是换到新的服务器环境下不行。 解决方法就是将连接语句换成下面的: Driver={SQL SERVER};Server=数据库IP;UID=数据库帐号;PWD=数据库密码;Database=数据库名; 以上就是关于win2008 R2与sql2005、2008运行asp的时候速度缓慢的解决方法详解的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了win2008架设vpn 新建用户指定IP地址的方法,需要的朋友可以参考下 008架设vpn服务器完毕,新建账户,分配了静态IP地址,但是客户端拨号后获取了另一个IP怎么才能给客户端指定IP,这里就为大家分享一下 自己解决了,具体如下1、开启NPS, 2、创建并配置策略 (备注:本人新建账户均归属guests,故选择用户组添加“GUESTS”) 主要就是下面红框框一定要勾上 操作完毕,解决 以上就是win2008架设vpn如何新建用户指定IP地址的方法详细介绍(图文)的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了win2008 R2设置IP安全策略后在服务器内打开网站很慢或无法访问外部网站的原因,需要的朋友可以参考下 win2008R2设置IP安全策略后在服务器内打开网站很慢速度只有几KB的原因 是因为IP安全策略中的关闭策略中设置了原地址“任何IP”到目标地址“任何IP”的UDP任何端口都关闭; 修改为原地址“我的IP地址”到目标地址“任何IP”的UDP任何端口都关闭,再开放53端口的UDP,我的IP到DNS的IP就可以了!这个是为了解析域名用的! 操作思路:禁止所有用户访问1433端口,只允许个别IP访问。(安全策略里面允许的优先级大于禁止) 1、添加“IP筛选”规则 IP筛选规则用于设置哪些IP需要被限制。 打开 【管理工具】 ,点击 【本地安全策略】,选择“IP 安全策略,在本地计算机” 右键菜单,选择 【管理 IP 筛选器列表和筛选器操作】 1)先添加一条“所有IP”访问1433端口的规则,名称:禁止所有IP访问1433 2)再添加一条“特定IP”访问1433端口的规则,名称:允许特定IP访问1433 2、添加“筛选器操作”规则 筛选器操作是对IP筛选规则的补充,用于明确对于已经限制的IP,是放行还是拦截。 在“IP 安全策略,在本地计算机”,右键菜单,选择 【管理 IP 筛选器列表和筛选器操作】,选择“管理筛选器操作” 建立两条规则,一条放行,一条拦截。 3、创建“IP 安全策略”条目 IP筛选规则和操作规则都创建好后,现在我们需要把这些规则组合起来了。 “IP 安全策略”就是包含这些规则的容器。 在“IP 安全策略,在本地计算机”,右键菜单,选择“创建 IP 安全策略”,名称:护卫神IP策略 4、向“IP 安全策略”添加IP筛选规则 1)添加“禁止所有IP访问1433”的筛选规则,并选择拦截模式。 2)添加“允许特定IP访问1433”的筛选规则,并选择放行模式。 筛选规则都添加完后,启用该安全策略即可生效了。 如果您还需要更多限制规则,先按照流程1的方法建立IP筛选规则,再按照流程4添加到“IP安全策略”条目即可。 以上就是win2008 R2设置IP安全策略后在服务器内打开网站很慢或无法访问外部网站的原因的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了Win2008 R2 WEB 服务器安全设置指南之禁用不必要的服务和关闭端口,需要的朋友可以参考下 安全是重中之重,以最少的服务换取最大的安全。通过只启用需要用到的服务、关闭暂时用不到的服务或不用的服务,这样最大程度来提高安全性。 作为web服务器,并不是所有默认服务都需要的,所以像打印、共享服务都可以禁用。当然了,你的系统补丁也需要更新到最新,一些端口的漏洞已经随着补丁的更新而被修复了。网上的一些文章都是相互复制且是基于win2003系统较多,而win2008相比win2003本身就要安全很多。 那我们为什么还要谈关闭端口呢,因为我们要防患于未然,万一服务器被黑就不好玩了。 禁用不必要的服务 控制面板―――管理工具―――服务:把下面的服务全部停止并禁用。 TCP/IP NetBIOS Helper Server 这个服务器需要小心。天翼云主机需要用到这个服务,所以在天翼云主机上不能禁用。 Distributed Link Tracking Client Microsoft Search 如果有,则禁用 Print Spooler Remote Registry 因为我们使用的是云主机,跟单机又不一样,所以有些服务并不能一概而论,如上面的Server服务。例如天翼云的主机,上海1和内蒙池的主机就不一样,内蒙池的主机需要依赖Server服务,而上海1的不需要依赖此服务,所以上海1的可以禁用,内蒙池就不能禁用了。 所以在禁用某一项服务时必须要小心再小心。 删除文件打印和共享 本地连接右击属性,删除TCP/IPV6、Microsoft网络客户端、文件和打印共享。 打开防火墙,入站规则,所的“网络发现”和“文件和打印机共享”的规则全部禁用。 关闭端口 关闭139端口 本地连接右击属性,选择“TCP/IPv4协议”,属性,在“常规”选项卡下选择“高级”,选择“WINS”选项卡,选中“禁用 TCP/IP 上的NetBIOS”,这样即关闭了139端口。 使用IP安全策略关闭端口 1.点击 控制面板-管理工具",双击打开"本地策略",选中"IP安全策略,在本地计算机“右边的空白位置右击鼠标,弹出快捷菜单,选择"创建IP安全策略”,弹出向导。在向导中点击下一步,当显示“安全通信请求”画面时,“激活默认相应规则”左边的按默认留空,点“完成”就创建了一个新的IP安全策略。 2.右击刚才创建的新的IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按纽添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按纽,弹出IP筛选器列表窗口。在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的"添加"按纽 添加新的筛选器。 3.进入“筛选器属性”对话框,首先看到的是寻地址,源地址选“任何IP地址”,目标地址选“我的IP地址”,点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”的下的文本框中输入“135”,点击确定。这样就添加了一个屏蔽TCP135 端口的筛选器,可以防止外界通过135端口连上你的电脑。点确定后回到筛选器列表的对话框,可以看到已经添加了一条策略。重复以上步骤继续添加TCP137 139 445 593 1025 2745 3127 3128 3389 6129端口和udp 135 139 445 端口,为它们建立相应的筛选器。建立好上述端口的筛选器,最后点击确定按纽。 4.在“新规则属性”对话框中,选中“新IP筛选器列表”然后点击其左边的复选框,表示已经激活。最后点击“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,在“新筛选器操作属性”的“安全方法”选项卡中,选择“阻止”,然后点击“应用”“确定”。 5.进入“新规则属性”对话框,选中“新筛选器操作”左边的复选框,表示已经激活,点击“关闭”按钮,关闭对话框。最后“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按确定关闭对话框。在“本地安全策略”窗口,用鼠标右击新添加的IP安全策略,然后选择“分配”。 脚本之家小编注:更详细的ip安全策略设置方法可以参考这篇文章:http://www.jb51.net/article/86271.htm 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 以上就是Win2008 R2 WEB服务器安全设置指南之禁用不必要的服务和关闭端口的详细介绍的详细内容,更多请关注学派吧其它相关文章!
这篇文章主要介绍了windows server 2008 IP安全策略关闭端口,禁止ping,修改远程连接3389端口,开放指定端口,需要的朋友可以参考下 windows server 2008 IP安全策略关闭端口: Tomcat服务访问不了情况解决。 Windows默认情况下有很多端口是开放的,在你上网的时候,网络病毒和黑客可以通过这些端口连上你的电脑。为了让你的系统变得相对安全,应该封闭一些不常用的端口,主要有:TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口,一些流行病毒的后门端口(如 TCP 2745、3127、6129 端口),以及远程服务访问端口3389。 现在简要介绍一下关闭Windows Server2008一些端口的步骤: 1.点击 控制面板-管理工具",双击打开"本地策略",选中"IP安全策略,在本地计算机“右边的空白位置右击鼠标,弹出快捷菜单,选择"创建IP安全策略”,弹出向导。在向导中点击下一步,当显示“安全通信请求”画面时,“激活默认相应规则”左边的按默认留空,点“完成”就创建了一个新的IP安全策略。 2.右击刚才创建的新的IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按纽添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按纽,弹出IP筛选器列表窗口。在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的"添加"按纽 添加新的筛选器。 3.进入“筛选器属性”对话框,首先看到的是寻地址,源地址选“任何IP地址”,目标地址选“我的IP地址”,点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”的下的文本框中输入“135”,点击确定。这样就添加了一个屏蔽TCP135 端口的筛选器,可以防止外界通过135端口连上你的电脑。点确定后回到筛选器列表的对话框,可以看到已经添加了一条策略。重复以上步骤继续添加TCP137 139 445 593 1025 2745 3127 3128 3389 6129端口和udp 135 139 445 端口,为它们建立相应的筛选器。建立好上述端口的筛选器,最后点击确定按纽。 4.在“新规则属性”对话框中,选中“新IP筛选器列表”然后点击其左边的复选框,表示已经激活。最后点击“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,在“新筛选器操作属性”的“安全方法”选项卡中,选择“阻止”,然后点击“应用”“确定”。 5.进入“新规则属性”对话框,选中“新筛选器操作”左边的复选框,表示已经激活,点击“关闭”按钮,关闭对话框。最后“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按确定关闭对话框。在“本地安全策略”窗口,用鼠标右击新添加的IP安全策略,然后选择“分配”。 修改远程连接3389端口: Windows2003修改3389端口的方法(windows server2008通用) 天要托管服务器了,需要修改服务器3389端口,上网搜了一下,果真找到,特此保存 为了避免别人扫描远程桌面连接端口,保障服务器的安全,我们可以修改一下3389端口。 总共有两个步骤:一是修改服务器端的端口设置;二是客户端连接方法。方法如下(以Windows Server 2003为例,其它系统仅供参考): 一、修改服务器端的端口设置(注册表有2处需要修改) 1、第一处: [H KEY _LOCAL_MACHINE\SYSTEM\ Current Control Set \Control\Terminal Server\Wds\rdpwd\Tds\tcp] PortNumber值,默认是3389,选择十进制,改成你所希望的端口(范围在1024到65535,而且不能冲突),比如6000,见下图: 2、第二处: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] PortNumber值,默认是3389,选择十进制,改成你所希望的端口(范围在1024到65535,而且不能冲突),比如6000,见下图: 3、重启系统使设置生效。 注意:两次修改的端口要一致。 事实上,只修改第二处也是可以的。 另外,第二处的标准连接形式是:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\<connection>],其中<connection>表示具体的某个RDP-TCP连接(这里应该有一个或多个类似RDP-TCP的子健,取决于你建立了多少个RDP服务),一样改掉PortNumber。 二、客户端连接方法 1、打开远程桌面连接:XP/2003下在运行里输入"mstsc”)即可。 2、连接的格式:IP:修改后的端口,如10.10.10.10:6000 win7(Server 2008 R2)防火墙设置开放某个端口 有时开发过程中,别人需要连到你的本机进行网站的访问,防火墙会阻止外界的访问,你可以开放本地一个端口,让别人可以访问。 1、找到防火墙 2、点击高级设置 3、点击“入站规则”,再点击“新建规则”: 4、点击“端口” 5、填写你要开放的端口号,我这里用9999: 6、默认下一步,下一步,最后给你的设置取个名字,随便你,我这里用pass9999point,就是让9999端口通过 7、点击完成,你可以在列表中看到你设置的规则,然后这个端口就可以被外界访问了,而不必将防火墙全部关闭: 以上就是关于win2008 IP安全策略关闭端口、禁止ping、修改3389端口、开放指定端口的详解的详细内容,更多请关注php中文网其它相关文章!
本篇文章给大家带来的内容是关于Navicat for Oracle工具连接oracle的方法步骤(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持。之前用过 Navicat for sqlserver,感觉很好用,所以下载了Oracle版的用。 上网查看了一下这个工具可以用于任何版本 8i 或以上的 Oracle 数据库服务器,并支持大部份 Oracle 最新版本的功能,包括目录、表空间、同义词、实体化视图、触发器、序列、类型等。下边的这张图是oracle版的,MySQL和Sql Server版基本一样。 界面简洁,无冗余,对于日常的数据操作基本可以满足。以下是对其的安装和配置,这里重点讲配置 一、Navicat for Oracle的安装: 软件的安装就不多说了,基本都是一直下一步。网上有那种免安装破解版的,拿来可以直接用。 二、Navicat for Oracle的配置 1、启动该工具,出现开始界面,单击 “文件”—-“新建连接”选项,进行连接数据库。 2、在“新建连接”对话框中,输入任意的连接名,选择默认的连接类型,输入oracle数据库所在的服务器地址,连接本地的oracle可输入“localhost”,oracle的默认端口号是“1521”,输入数据库的SID或者是该数据库所对应的服务名,输入用户名和密码,这里我使用的是“test”,单击“连接测试”按钮,进行测试,连接成功,如图所示: 3、初次连接,在选择开始测试的时候,往往会出现错误: “ORA-12737: Instant Client Light: unsupported server character set CHS16GBK”,这个错误是很典型的,是由于服务器的编码不支持造成的,但是如果我改变了服务器的字符集编码,这是不现实的,所以上网找了解决的方案,最后知道了只要去oracle官网下载一个最新版的OCI的文件,将原先的OCI的文件的覆盖即可解决下。该文件在博客的末尾已经提供了。 下面是文件替换的过程,下载的文件是解压,找到其中的4个文件:oci.dll,orannzsbb11.dll,oraocci11.dll,oraociei11.dll(这个文件最重要)。 选则“工具”菜单下的“选项”命令,如图所示打开选项的界面。 4、在“其它”的下边选择OCI,在右边的第一个的文件浏览的地方,选择oci.dll的位置,我的默认的位置是“F:\Program Files\Navicat_for_Oracle(www.greenxf.com)\Navicat for Oracle\instantclient_10_2\oci.dll”,把从压缩文件中取出的四个文件放到该目录下,其他的可备份,如下图所示下: 5、这样配置之后,重新启动该软件,重复2中的连接配置,测试连接,这时就连接成功了。成功之后就可以看到”TEST”用户的表了,可以很方便的操作数据库了,我这里还没创建表。 可右键 ‘表’ 导入、导出表,导入数据文件到新表中,让GISER人惊喜的是,ArcGIS的SHP数据集的dbf竟然也支持。 我所使用的数据库是oracle11g,我们下载的是Instant client这个工具,它有11的和10的版本,对oracle9i及以上的版本使用11的。其他使用10版本的。 以上就是Navicat for Oracle工具连接oracle的方法步骤(图文)的详细内容,更多请关注学派吧其它相关文章!
本篇文章给大家带来的内容是关于Navicat查看MySQL日志的方法教程(图),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1、使用Navicat服务器监控工具 2、打开日志开关 右边参数设置变量"log"值为"ON" 3、定位日志位置,查看日志 4、执行SQL注入语句 5、查看日志记录 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:”Calibri”,”sans-serif”; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} 以上就是Navicat查看MySQL日志的方法步骤(图)的详细内容,更多请关注学派吧其它相关文章!
本篇文章给大家带来的内容是关于navicat中对数据库操作的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 navicat我觉得做程序的基本上都会用,它方便,快捷,直观等,优点很多,这也是我写这篇文章的原因。以前我基本上都是用phpmyadmin,也挺好用,不过也有不少缺点,比如数据库备份文件太大,根本没法用导入,多数据库服务器管理,还要去配置phpmyadmin,其实挺不爽的。navicat对于刚用的人来说,其实也不是很方便,但是用熟就不一样了。下面就如何结合快捷键的方式,让navicat用着更舒服。 一,navicat如何写sql语句查询? 方法1:ctrl+q就会弹出一个sql输入窗口,就可以在里面写sql了。写完sql后,直接ctrl+r就执行sql了。还有一点,写sql语句时,navicat会提示的,根代码补全差不多,挺爽的。 方法2:按f6会弹出一个命令窗口,就根mysql -u mysql -p进去时操作一样,不过\G用的时候会报错。在这里也可以查询。 小技巧:这些窗口,可以拖动到一起的,看下图 navicat 多窗口切换 上图中有二个窗口,我们可以通过,快捷键ctrl+tab,在窗口间进行切换。 二,navicat如何备份,还原数据库,以及表? 方法1:右击数据名=》选中dump sql file就可以备份,如果要还原,就选execute sql file就行了。备份表,根备份数据库一样操作。还原表,就用import wizard就行了。这种备份导出来的只能是.sql文件。如果想备份成其他文件格式,看方法 2. 方法2:点击数据库,在点上方的export wizard就会弹出一个窗口,让你选择备份成什么样的文件,下一步 navicat 备份数据库,以及表 如果表太多,用这种方法备份,实在是不方便。如果是导入的话就用import wizard就行了。备份表同样的操作。 三,如何查看表数据和表结构? 双击表就可以查看表数据了,ctrl+d不光可以看到表结构,还可以看到索引,外键,触发器等。 四,如何管理多个mysql服务器? 点击左上方的connection按钮,多连接几个就行了。 五,如何用navicat对数据库管理员进行管理? 点击左上方manage users就会弹出一个窗口,里面会列出所有的mysql管理员。修改权限后,保存就行了。 以上就是navicat中对数据库操作的方法介绍的详细内容,更多请关注学派吧其它相关文章!
为了减少开发人员的错误操作,可以设置权限来进行控制,通过为MySQL服务器建立不同的用户,并为用户赋予不同的权限,来达到目标。这篇文章就给大家介绍怎么设置Navicat数据库的操作权限,需要的朋友可以参考一下。1 以下内容为详细设置步骤。 一、新建用户 1、用Navicat连接本地服务器(如果之前已连接,请打开连接) 2、点击菜单栏 –> 用户,如图所示: 3、点击新建用户,如下图所示: 用户名:设置连接服务器的用户名 主机:设置允许连接服务器的主机ip地址。%,代表此用户可以在所有主机上连接服务器;192.168.21.*,代表此用户只能在ip地址属于21段的主机上连接服务器;192.168.21.88,代表此用户只能在ip地址为192.168.21.88的主机上连接服务器。 密码:设置连接服务器的密码 确认密码:与密码设置保持一致 二、权限设置 如图上图所示,我们可以看到还有其他Tab项:高级、服务器权限、权限和SQL预览。 高级:可以设置此用户每小时最多查询数/最多更新数/最多连接数/最多用户连接数以及SSL。 服务器权限:设置对服务器上所有数据库的操作权限。 权限:设置具体的库和具体的表的权限。当与服务器权限设置冲突时,以服务器权限为准。 SQL预览:以上所有设置的SQL语句都会展示在这里。 服务器权限和权限选项卡的设置含义,请参考下面的权限说明。 三、权限说明 四、MySQL权限经验原则 权限控制主要是出于安全因素,因此需要遵循以下几个经验原则: 1、只授予能满足需要的最小权限,防止用户误操作或有意进行破坏操作。 2、创建用户时限制用户的登录主机,一般是限制成指定IP或者内网IP段。 3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候回自动创建一些用户,这些用户默认没有密码。 4、为每个用户设置满足密码复杂度的密码。 5、定期清理不需要的用户。回收权限或者删除用户。 结语 学习一个新知识,看官方文档是最高效的方式。网上的其他学习资料大多经过加工,而且是往坏的方向加工。要不就是人云亦云,让人误入歧途。不过,很多时候还不得不从网上学习,因为大多数的官方文档是英文的,阅读起来真的是有困难。这个时候发现,能够轻松的阅读英文文档是非常珍贵的一项技能。 以上就是在Navicat中如何设置数据库的操作权限的详细内容,更多请关注学派吧其它相关文章!
本文章给大家带来的内容是关于巧用Navicat for MySQL的快捷键,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 巧妙地使用 Navicat for MySQL 快捷键,可以大大提高工作效率,本篇经验将分类介绍 Navicat for MySQL 快捷键。 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行 ctrl+l 删除一行 ctrl+n 打开一个新的查询窗口 ctrl+w 关闭一个查询窗口 ctrl+tab 多窗口切换 注意事项:请不要在一个窗口中写很多 update和delete! Navicat 主窗口,快捷键如下图所示: 表设计器,快捷键如下图所示: 表查看器,快捷键如下图所示: 视图查看器,快捷键如下图所示: 视图或查询,快捷键如下图所示: SQL 编辑器,快捷键如下图所示: 报表,快捷键如下图所示: 模型,快捷键如下图所示: 一,navicat如何写sql语句查询? 方法1:ctrl+q就会弹出一个sql输入窗口,就可以在里面写sql了。写完sql后,直接ctrl+r就执行sql了。还有一点,写sql语句时,navicat会提示的,根代码补全差不多,挺爽的。 方法2:按f6会弹出一个命令窗口,就根mysql -u mysql -p进去时操作一样,不过\G用的时候会报错。在这里也可以查询。 小技巧:这些窗口,可以拖动到一起的 navicat 多窗口切换,我们可以通过,快捷键ctrl+tab,在窗口间进行切换。 二,navicat如何备份,还原数据库,以及表? 方法1:右击数据名=》选中dump sql file就可以备份,如果要还原,就选execute sql file就行了。备份表,根备份数据库一样操作。还原表,就用import wizard就行了。这种备份导出来的只能是.sql文件。如果想备份成其他文件格式,看方法 2. 方法2:点击数据库,在点上方的export wizard就会弹出一个窗口,让你选择备份成什么样的文件,下一步 navicat 备份数据库,以及表 如果表太多,用这种方法备份,实在是不方便。如果是导入的话就用import wizard就行了。备份表同样的操作。 三,如何查看表数据和表结构? 双击表就可以查看表数据了,ctrl+d不光可以看到表结构,还可以看到索引,外键,触发器等。 四,如何管理多个mysql服务器? 点击左上方的connection按钮,多连接几个就行了。 五,如何用navicat对数据库管理员进行管理? 点击左上方manage users就会弹出一个窗口,里面会列出所有的mysql管理员。修改权限后,保存就行了。 上面5点,只是一些常用的,基本的操作,navicat还有很多人性化的操作。在这里就不多说了,有兴趣的朋友,可以下一个来玩玩。个人觉得用着挺爽的。 以上就是巧用Navicat for MySQL的快捷键的详细内容,更多请关注学派吧其它相关文章!
本篇文章给大家带来的内容是关于Redis与Memcached有何区别 ?redis和Memcached的区别比较,有一定的参考价值,有需要的朋友可以参考一下, memcached和redis,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了。前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习,有理解错误之处,欢迎指正。 文中使用的架构类的图片大多来自于网络,有部分图与最新实现有出入,文中已经指出。 一. 综述 读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached和redis是干啥的?众所周知,数据一般会放在数据库中,但是查询数据会相对比较慢,特别是用户很多时,频繁的查询,需要耗费大量的时间。怎么办呢?数据放在哪里查询快?那肯定是内存中。memcached和redis就是将数据存储在内存中,按照key-value的方式查询,可以大幅度提高效率。所以一般它们都用做缓存服务器,缓存常用的数据,需要查询的时候,直接从它们那儿获取,减少查询数据库的次数,提高查询效率。 二. 服务方式 memcached和redis怎么提供服务呢?它们是独立的进程,需要的话,还可以让他们变成daemon进程,所以我们的用户进程要使用memcached和redis的服务的话,就需要进程间通信了。考虑到用户进程和memcached和redis不一定在同一台机器上,所以还需要支持网络间通信。因此,memcached和redis自己本身就是网络服务器,用户进程通过与他们通过网络来传输数据,显然最简单和最常用的就是使用tcp连接了。另外,memcached和redis都支持udp协议。而且当用户进程和memcached和redis在同一机器时,还可以使用unix域套接字通信。 三. 事件模型 下面开始讲他们具体是怎么实现的了。首先来看一下它们的事件模型。 自从epoll出来以后,几乎所有的网络服务器全都抛弃select和poll,换成了epoll。redis也一样,只不多它还提供对select和poll的支持,可以自己配置使用哪一个,但是一般都是用epoll。另外针对BSD,还支持使用kqueue。而memcached是基于libevent的,不过libevent底层也是使用epoll的,所以可以认为它们都是使用epoll。epoll的特性这里就不介绍了,网上介绍文章很多。 它们都使用epoll来做事件循环,不过redis是单线程的服务器(redis也是多线程的,只不过除了主线程以外,其他线程没有event loop,只是会进行一些后台存储工作),而memcached是多线程的。 redis的事件模型很简单,只有一个event loop,是简单的reactor实现。不过redis事件模型中有一个亮点,我们知道epoll是针对fd的,它返回的就绪事件也是只有fd,redis里面的fd就是服务器与客户端连接的socket的fd,但是处理的时候,需要根据这个fd找到具体的客户端的信息,怎么找呢?通常的处理方式就是用红黑树将fd与客户端信息保存起来,通过fd查找,效率是lgn。不过redis比较特殊,redis的客户端的数量上限可以设置,即可以知道同一时刻,redis所打开的fd的上限,而我们知道,进程的fd在同一时刻是不会重复的(fd只有关闭后才能复用),所以redis使用一个数组,将fd作为数组的下标,数组的元素就是客户端的信息,这样,直接通过fd就能定位客户端信息,查找效率是O(1),还省去了复杂的红黑树的实现(我曾经用c写一个网络服务器,就因为要保持fd和connect对应关系,不想自己写红黑树,然后用了STL里面的set,导致项目变成了c++的,最后项目使用g++编译,这事我不说谁知道?)。显然这种方式只能针对connection数量上限已确定,并且不是太大的网络服务器,像nginx这种http服务器就不适用,nginx就是自己写了红黑树。 而memcached是多线程的,使用master-worker的方式,主线程监听端口,建立连接,然后顺序分配给各个工作线程。每一个从线程都有一个event loop,它们服务不同的客户端。master线程和worker线程之间使用管道通信,每一个工作线程都会创建一个管道,然后保存写端和读端,并且将读端加入event loop,监听可读事件。同时,每个从线程都有一个就绪连接队列,主线程连接连接后,将连接的item放入这个队列,然后往该线程的管道的写端写入一个connect命令,这样event loop中加入的管道读端就会就绪,从线程读取命令,解析命令发现是有连接,然后就会去自己的就绪队列中获取连接,并进行处理。多线程的优势就是可以充分发挥多核的优势,不过编写程序麻烦一点,memcached里面就有各种锁和条件变量来进行线程同步。 四. 内存分配 memcached和redis的核心任务都是在内存中操作数据,内存管理自然是核心的内容。 首先看看他们的内存分配方式。memcached是有自己得内存池的,即预先分配一大块内存,然后接下来分配内存就从内存池中分配,这样可以减少内存分配的次数,提高效率,这也是大部分网络服务器的实现方式,只不过各个内存池的管理方式根据具体情况而不同。而redis没有自己得内存池,而是直接使用时分配,即什么时候需要什么时候分配,内存管理的事交给内核,自己只负责取和释放(redis既是单线程,又没有自己的内存池,是不是感觉实现的太简单了?那是因为它的重点都放在数据库模块了)。不过redis支持使用tcmalloc来替换glibc的malloc,前者是google的产品,比glibc的malloc快。 由于redis没有自己的内存池,所以内存申请和释放的管理就简单很多,直接malloc和free即可,十分方便。而memcached是支持内存池的,所以内存申请是从内存池中获取,而free也是还给内存池,所以需要很多额外的管理操作,实现起来麻烦很多,具体的会在后面memcached的slab机制讲解中分析。 五. 数据库实现 接下来看看他们的最核心内容,各自数据库的实现。 1. memcached数据库实现 memcached只支持key-value,即只能一个key对于一个value。它的数据在内存中也是这样以key-value对的方式存储,它使用slab机制。 首先看memcached是如何存储数据的,即存储key-value对。如下图,每一个key-value对都存储在一个item结构中,包含了相关的属性和key和value的值。 item是保存key-value对的,当item多的时候,怎么查找特定的item是个问题。所以memcached维护了一个hash表,它用于快速查找item。hash表适用开链法(与redis一样)解决键的冲突,每一个hash表的桶里面存储了一个链表,链表节点就是item的指针,如上图中的h_next就是指桶里面的链表的下一个节点。 hash表支持扩容(item的数量是桶的数量的1.5以上时扩容),有一个primary_hashtable,还有一个old_hashtable,其中正常适用primary_hashtable,但是扩容的时候,将old_hashtable = primary_hashtable,然后primary_hashtable设置为新申请的hash表(桶的数量乘以2),然后依次将old_hashtable 里面的数据往新的hash表里面移动,并用一个变量expand_bucket记录以及移动了多少个桶,移动完成后,再free原来的old_hashtable 即可(redis也是有两个hash表,也是移动,不过不是后台线程完成,而是每次移动一个桶)。扩容的操作,专门有一个后台扩容的线程来完成,需要扩容的时候,使用条件变量通知它,完成扩容后,它又考试阻塞等待扩容的条件变量。这样在扩容的时候,查找一个item可能会在primary_hashtable和old_hashtable的任意一个中,需要根据比较它的桶的位置和expand_bucket的大小来比较确定它在哪个表里。 item是从哪里分配的呢?从slab中。如下图,memcached有很多slabclass,它们管理slab,每一个slab其实是trunk的集合,真正的item是在trunk中分配的,一个trunk分配一个item。一个slab中的trunk的大小一样,不同的slab,trunk的大小按比例递增,需要新申请一个item的时候,根据它的大小来选择trunk,规则是比它大的最小的那个trunk。这样,不同大小的item就分配在不同的slab中,归不同的slabclass管理。 这样的缺点是会有部分内存浪费,因为一个trunk可能比item大,如图2,分配100B的item的时候,选择112的trunk,但是会有12B的浪费,这部分内存资源没有使用。 如上图,整个构造就是这样,slabclass管理slab,一个slabclass有一个slab_list,可以管理多个slab,同一个slabclass中的slab的trunk大小都一样。slabclass有一个指针slot,保存了未分配的item已经被free掉的item(不是真的free内存,只是不用了而已),有item不用的时候,就放入slot的头部,这样每次需要在当前slab中分配item的时候,直接取slot取即可,不用管item是未分配过的还是被释放掉的。 然后,每一个slabclass对应一个链表,有head数组和tail数组,它们分别保存了链表的头节点和尾节点。链表中的节点就是改slabclass所分配的item,新分配的放在头部,链表越往后的item,表示它已经很久没有被使用了。当slabclass的内存不足,需要删除一些过期item的时候,就可以从链表的尾部开始删除,没错,这个链表就是为了实现LRU。光靠它还不行,因为链表的查询是O(n)的,所以定位item的时候,使用hash表,这已经有了,所有分配的item已经在hash表中了,所以,hash用于查找item,然后链表有用存储item的最近使用顺序,这也是lru的标准实现方法。 每次需要新分配item的时候,找到slabclass对于的链表,从尾部往前找,看item是否已经过期,过期的话,直接就用这个过期的item当做新的item。没有过期的,则需要从slab中分配trunk,如果slab用完了,则需要往slabclass中添加slab了。 memcached支持设置过期时间,即expire time,但是内部并不定期检查数据是否过期,而是客户进程使用该数据的时候,memcached会检查expire time,如果过期,直接返回错误。这样的优点是,不需要额外的cpu来进行expire time的检查,缺点是有可能过期数据很久不被使用,则一直没有被释放,占用内存。 memcached是多线程的,而且只维护了一个数据库,所以可能有多个客户进程操作同一个数据,这就有可能产生问题。比如,A已经把数据更改了,然后B也更改了改数据,那么A的操作就被覆盖了,而可能A不知道,A任务数据现在的状态时他改完后的那个值,这样就可能产生问题。为了解决这个问题,memcached使用了CAS协议,简单说就是item保存一个64位的unsigned int值,标记数据的版本,每更新一次(数据值有修改),版本号增加,然后每次对数据进行更改操作,需要比对客户进程传来的版本号和服务器这边item的版本号是否一致,一致则可进行更改操作,否则提示脏数据。 以上就是memcached如何实现一个key-value的数据库的介绍。 2. redis数据库实现 首先redis数据库的功能强大一些,因为不像memcached只支持保存字符串,redis支持string, list, set,sorted set,hash table 5种数据结构。例如存储一个人的信息就可以使用hash table,用人的名字做key,然后name super, age 24, 通过key 和 name,就可以取到名字super,或者通过key和age,就可以取到年龄24。这样,当只需要取得age的时候,不需要把人的整个信息取回来,然后从里面找age,直接获取age即可,高效方便。 为了实现这些数据结构,redis定义了抽象的对象redis object,如下图。每一个对象有类型,一共5种:字符串,链表,集合,有序集合,哈希表。 同时,为了提高效率,redis为每种类型准备了多种实现方式,根据特定的场景来选择合适的实现方式,encoding就是表示对象的实现方式的。然后还有记录了对象的lru,即上次被访问的时间,同时在redis 服务器中会记录一个当前的时间(近似值,因为这个时间只是每隔一定时间,服务器进行自动维护的时候才更新),它们两个只差就可以计算出对象多久没有被访问了。 然后redis object中还有引用计数,这是为了共享对象,然后确定对象的删除时间用的。最后使用一个void*指针来指向对象的真正内容。正式由于使用了抽象redis object,使得数据库操作数据时方便很多,全部统一使用redis object对象即可,需要区分对象类型的时候,再根据type来判断。而且正式由于采用了这种面向对象的方法,让redis的代码看起来很像c++代码,其实全是用c写的。 //#define REDIS_STRING 0 // 字符串类型 //#define REDIS_LIST 1 // 链表类型 //#define REDIS_SET 2 // 集合类型(无序的),可以求差集,并集等 //#define REDIS_ZSET 3 // 有序的集合类型 //#define REDIS_HASH 4 // 哈希类型 //#define REDIS_ENCODING_RAW 0 /* Raw representation */ //raw 未加工 //#define REDIS_ENCODING_INT 1 /* Encoded as integer */ //#define REDIS_ENCODING_HT 2...
本篇文章给大家带来的内容是关于MongoDB提升性能的方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 MongoDB 是高性能数据,但是在使用的过程中,大家偶尔还会碰到一些性能问题。MongoDB和其它关系型数据库相比,例如 SQL Server 、MySQL 、Oracle 相比来说,相对较新,很多人对其不是很熟悉,所以很多开发、DBA往往是注重功能的实现,而忽视了性能的要求。其实,MongoDB和 SQL Server 、MySQL 、Oracle 一样,一个 数据库对象的设计调整、索引的创建、语句的优化,都会对性能产生巨大的影响。 为了充分挖掘MongoDB性能,现简单总计了以下18条,欢迎大家一起来持续总结完善。 (1)文档中的_id键推荐使用默认值,禁止向_id中保存自定义的值。 解读: MongoDB文档中都会有一个“_id”键,默认是个ObjectID对象(标识符中包含时间戳、机器ID、进程ID和计数器)。MongoDB在指定_id与不指定_id插入时 速度相差很大,指定_id会减慢插入的速率。 (2)推荐使用短字段名。 解读:与关系型数据库不同,MongoDB集合中的每一个文档都需要存储字段名,长字段名会需要更多的存储空间。 (3)MongoDB索引可以提高文档的查询、更新、删除、排序操作,所以结合业务需求,适当创建索引。 (4)每个索引都会占用一些空间,并且导致插入操作的资源消耗,因此,建议每个集合的索引数尽量控制在5个以内。 (5)对于包含多个键的查询,创建包含这些键的复合索引是个不错的解决方案。复合索引的键值顺序很重要,理解索引最左前缀原则。 解读:例如在test集合上创建组合索引{a:1,b:1,c:1}。执行以下7个查询语句: db.test.find({a:”hello”}) // 1 db.test.find({b:”sogo”, a:”hello”}) // 2 db.test.find({a:”hello”,b:”sogo”, c:”666”}) // 3 db.test.find({c:”666”, a:”hello”}) // 4 db.test.find({b:”sogo”, c:”666”}) // 5 db.test.find({b:”sogo” }) // 6 db.test.find({c:”666”}) // 7 以上查询语句可能走索引的是1、2、3、4 查询应包含最左索引字段,以索引创建顺序为准,与查询字段顺序无关。 最少索引覆盖最多查询。 (6)TTL 索引(time-to-live index,具有生命周期的索引),使用TTL索引可以将超时时间的文档老化,一个文档到达老化的程度之后就会被删除。 解读:创建TTL的索引必须是日期类型。TTL索引是一种单字段索引,不能是复合索引。TTL删除文档后台线程每60s移除失效文档。不支持定长集合。 (7)需要在集合中某字段创建索引,但集合中大量的文档不包含此键值时,建议创建稀疏索引。 解读:索引默认是密集型的,这意味着,即使文档的索引字段缺失,在索引中也存在着一个对应关系。在稀疏索引中,只有包含了索引键值的文档才会出现。 (8)创建文本索引时字段指定text,而不是1或者-1。每个集合只有一个文本索引,但是它可以为任意多个字段建立索引。 解读:文本搜索速度快很多,推荐使用文本索引替代对集合文档的多字段的低效查询。 (9)使用findOne在数据库中查询匹配多个项目,它就会在自然排序文件集合中返回第一个项目。如果需要返回多个文档,则使用find方法。 (10)如果查询无需返回整个文档或只是用来判断键值是否存在,可以通过投影(映射)来限制返回字段,减少网络流量和客户端的内存使用。 解读:既可以通过设置{key:1}来显式指定返回的字段,也可以设置{key:0}指定需要排除的字段。 (11)除了前缀样式查询,正则表达式查询不能使用索引,执行的时间比大多数选择器更长,应节制性地使用它们。 (12)在聚合运算中,$要在match要在$group前面,通过$前置,可以减少match前置,可以减少$ group 操作符要处理的文档数量。 (13)通过操作符对文档进行修改,通常可以获得更好的性能,因为,不需要往返服务器来获取并修改文档数据,可以在序列化和传输数据上花费更少的时间。 (14)批量插入(batchInsert)可以减少数据向服务器的提交次数,提高性能。但是批量提交的BSON Size不超过48MB。 (15)禁止一次取出太多的数据进行排序,MongoDB目前支持对32M以内的结果集进行排序。如果需要排序,请尽量限制结果集中的数据量。 (16)查询中的某些$操作符可能会导致性能低下,如操作符可能会导致性能低下,如$ne,$,not,$exists,$nin,$or尽量在业务中不要使用。 a) $exist:因为松散的文档结构导致查询必须遍历每一个文档; b) $ne:如果当取反的值为大多数,则会扫描整个索引; c) $not:可能会导致查询优化器不知道应当使用哪个索引,所以会经常退化为全表扫描; d) $nin:全表扫描; e) \$有多个条件就会查询多少次,最后合并结果集,应该考虑装换为or:有多个条件就会查询多少次,最后合并结果集,应该考虑装换为$in。 (17)固定集合可以用于记录日志,其插入数据更快,可以实现在插入数据时,淘汰最早的数据。需求分析和设计时,可考虑此特性,即提高了性能,有省去了删除动作。 解读:固定集合需要显式创建,指定Size的大小,还能够指定文档的数量。集合不管先达到哪一个限制,之后插入的新文档都会把最老的文档移出。 (18)集合中文档的数据量会影响查询性能,为保持适量,需要定期归档。 以上就是MongoDB提升性能的方法总结的详细内容,更多请关注学派吧其它相关文章!
本篇文章给大家带来的内容是关于CPU资源和可用内存大小对数据库性能有何影响?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助 前言 可能影响到数据库性能的几个点,其一就是服务器硬件,也是本节要说的CPU与可用内存。 引入 当热数据超过可用内存大小,MemCache存储引擎缓存层容易失效(当缓存大量失效时,容易产生大量的网络传输),从而影响服务器的性能。 当出现这类I/O系统瓶颈时,我们就需要升级I/O子系统,来增加更多的内存,网络与I/O资源就是对我们数据库性能影响的第二个硬件因素。 CPU选型 采购人员经常性会向我们请教需要买什么参数的CPU硬件等等。 我到时想什么都买最好的!可是成本这种东西,只能让你选其一 那么,我们的CPU是要频率还是数量呢? 首先我们应该知道我们的应用是否是CPU密集型? 其实大多数时候我们要选择更好的而不是更多的 对于目前版本的MYSQL,不支持多CPU对同一SQL并发处理 当然,我们也要看看系统的并发量如何?(并发是纳秒级别的) 衡量数据库处理能力的指标 QPS:同时处理SQL的数量(这里是每秒) MYSQL目前被大量应用于Web类的应用中,这类应用的并发量也是非常大的,则其CPU核心数量就比频率重要 同时也要考虑所使用的MYSQL的版本(高版本对多核CPU的支持较好、起码你可以放心使用16核或者32核的CPU) 当然,如果你想要使用多核CPU的话,还需要使用MYSQL最新版本,这样才能做到最好的性能。 关于内存 MYSQL本身是单线程的 内存的大小直接影响MYSQL的性能 把数据存储到缓存中,可以大大提高数据的性能 常用的MYSQL存储引擎 MyISAM 将索引存储到内存中,数据则放在操作系统中 InnoDB 则是同时在内存存储索引和数据,进而提高数据库运行效率 内存配置的提示 1、内存虽然越多越好,但是对性能的影响是有限的,并不能无限的增加性能 2、当然,多余的内存,可以增加操作系统等其他服务的性能 缓存对读有益处,同时对写操作也有益处 CPU -》 内存 -》 磁盘 缓存可以对写操作进行延缓,将多次写入变成一次写入(Eg:浏览量计数器 以上就是CPU资源和可用内存大小对数据库性能有何影响?的详细内容,更多请关注学派吧其它相关文章!