各位老铁们好,相信很多人对服务器虚拟内存都不是特别的了解,因此呢,今天就来为大家分享下关于服务器虚拟内存以及什么是物理内存和虚拟内存的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

一、MySQL占用虚拟内存非常高怎么办

本文章来介绍一下关于MySQL占用虚拟内存非常高的解决办法,有需要学习的朋友可参考本文章。

mysql狂吃内存,刚启动的内存只占700M,半天后1.5G,运行2天后就占3G内存了,包括FP,以前重启MYSQL就降下来了,这样我就设置计划任务每天早上自动重启mysql,但现在重启mysql也没用,竟然连同FP占用4.5G内存,而我服务器只有2G物理内存,造成网站运行超级慢。怎么办????

服务器配置是win2003+PHP5+MYSQL5+ZEND3.3~~~~~my.ini

解决办法

解决mySQL占用内存超大问题

为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆。网上搜索了一下,得到高人指点my.ini。再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过多少M还是看得明的^-^

更改后如下:

代码如下

innodb_buffer_pool_size=576M->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀

query_cache_size=100M->16M查询缓存

tmp_table_size=102M->64M临时表大小

key_buffer_size=256m->32M

重启mysql服务后,虚拟内存降到200以下.

另外mysql安装目录下有几个文件:my-huge.ini、my-large.ini、my-medium.ini...这几个是根据内存大小作的建议配置,新手在设置的时候也可以参考一下。

2G内存的MYSQL数据库服务器 my.ini优化(my.ini)

2G内存,针对站少,优质型的设置,试验特:

代码如下

table_cache=1024物理内存越大,设置就越大.默认为2402,调到512-1024最佳

innodb_additional_mem_pool_size=8M默认为2M

innodb_flush_log_at_trx_mit=0等到innodb_log_buffer_size列队满后再统一储存,默认为1

innodb_log_buffer_size=4M默认为1M

innodb_thread_concurrency=8你的服务器CPU有几个就设置为几,默认为8

key_buffer_size=256M默认为218调到128最佳

tmp_table_size=64M默认为16M调到64-256最挂

read_buffer_size=4M默认为64K

read_rnd_buffer_size=16M默认为......

测试

2G内存,针对站多,抗压型的设置,最佳:

代码如下

table_cache=1024物理内存越大,设置就越大.默认为2402,调到512-1024最佳

innodb_additional_mem_pool_size=4M默认为2M

innodb_flush_log_at_trx_mit=1

(设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1)

innodb_log_buffer_size=2M默认为1M

innodb_thread_concurrency=8你的服务器CPU有几个就设置为几,建议用默认一般为8

key_buffer_size=256M默认为218调到128最佳

tmp_table_size=64M默认为16M调到64-256最挂

read_buffer_size=4M默认为64K

read_rnd_buffer_size=16M默认为256K

sort_buffer_size=32M默认为256K

max_connections=1024默认为1210

thread_cache_size=120默认为60

query_cache_size=64M

优化mysql数据库*能的十个参数:

(1)、max_connections

允许的同时客户的数量。增加该值增加 mysqld要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 too many connections错误。

(2)、record_buffer

每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。

(3)、key_buffer_size

服务器虚拟内存 什么是物理内存和虚拟内存

索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大,系统将开始换页并且真的变慢了。

(4)、back_log

要求mysql能有的连接数量。当主要mysql线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。

back_log值指出在mysql暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的tcp/ip连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。

当你观察你的主机进程列表,发现大量 264084| unauthenticated user| xxx.xxx.xxx.xxx| null| connect| null| login| null的待连接进程时,就要加大 back_log的值了。

(5)、interactive_timeout

服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 client_interactive选项的客户。

(6)、sort_buffer

每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速order by或group by操作。

(7)、table_cache

为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。mysql对每个唯一打开的表需要2个文件描述符。

(8)、thread_cache_size

可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高*能可以这个变量值。通过比较 connections和 threads_created状态的变量,可以看到这个变量的作用。

(9)、mysql的搜索功能

用mysql进行搜索,目的是能不分大小写,又能用中文进行搜索

只需起动mysqld时指定–default-character-set=gb2312

(10)、wait_timeout

服务器在关闭它之前在一个连接上等待行动的秒数。

注:上面的结果也仅仅是个人一些看法,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改。

二、我的服务器总是提示虚拟内存不够,请问该怎么处理。

1、感染病*

有些病*发作时会占用大量内存空间,导致系统出现内存不足的问题。赶快去杀*,升级病*库,然后把防*措施做好!

2、虚拟内存设置不当

最好设置大一点啊,一般来说最小768mb,最大1024mb,如果你要玩游戏并且还有很多硬盘空间的话,设置最小1g,最大1.5g也行

设置方法:

默认状态下,是让系统管理虚拟内存的,但是系统默认设置的管理方式通常比较保守,在自动调节时会造成页面文件不连续,而降低读写效率,工作效率就显得不高,于是经常会出现“内存不足”这样的提示,下面就让我们自已动手来设置它吧。

①用右键桌面上的“我的电脑”图标,在出现的右键菜单中选择“属*”选项打开“系统属*”窗口。在窗口中“高级”选项卡,出现高级设置的对话框

②“*能”区域的“设置”按钮,在出现的“*能选项”窗口中选择“高级”选项卡,打开其对话框。

③在该对话框中可看到关于虚拟内存的区域,“更改”按钮进入“虚拟内存”的设置窗口。选择一个有较大空闲容量的分区,勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次“设置→确定”按钮即可,最后重新启动计算机使虚拟内存设置生效。

以上是Windows

XP操作系统中虚拟内存的设置方法,笔者在此也简单提一下在Windows

98操作系统中的设置:

在Windows

98系统中依次进入“开始→设置→控制面板→系统→*能→虚拟内存”,在弹出的对话框中选中“用户自己指定虚拟内存设置”选项,将虚拟内存的位置设在合适的分区中,并设定好虚拟内存的最小值与最大值,最后“确定”按钮完成。

建议:可以划分出一个小分区专门提供给虚拟内存、IE临时文件存储等使用,以后可以对该分区定期进行磁盘整理,从而能更好提高计算机的工作效率。

以WinXP为例,右键“我的电脑”,选择“属*”,然后在“高级”标签页,“*能”框中的“设置”按钮,切换到“高级”标签页,然后在“虚拟内存”框中“更改”按钮,接着重新设置虚拟内存大小,完成后重新启动系统就好了。

3、系统空间不足

虚拟内存文件默认是在系统盘中,如WinXP的虚拟内存文件名为“pagefile.sys”,如果系统盘剩余空间过小,导致虚拟内存不足,也会出现内存不足的问题。系统盘至少要保留300MB剩余空间,当然这个数值要根据用户的实际需要而定。用户尽量不要把各种应用软件安装在系统盘中,保证有足够的空间供虚拟内存文件使用,而且最好把虚拟内存文件安放到非系统盘中。

4、因为SYSTEM用户权限设置不当

基于NT内核的Windows系统启动时,SYSTEM用户会为系统创建虚拟内存文件。有些用户为了系统的安全,采用NTFS文件系统,但却取消了SYSTEM用户在系统盘“写入”和“修改”的权限,这样就无法为系统创建虚拟内存文件,运行大型程序时,也会出现内存不足的问题。问题很好解决,只要重新赋予SYSTEM用户“写入”和“修改”的权限即可,不过这个仅限于使用NTFS文件系统的用户。

三、什么是物理内存和虚拟内存

1、物理内存是指由于安装内存条而获得的临时储存空间。主要作用是在计算机运行时为操作系统和各种程序提供临时储存。常见的物理内存规格有256M、512M、1G、2G等,当物理内存不足时,可以用虚拟内存代替。

2、虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的空间),它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据*。

扩展资料

虚拟内存工作原理:

1、虚拟内存中央处理器访问主存的逻辑分解成组号a和组内b,并对组号a进行变换,即将逻辑组号a作为索引,查变换表,以确定该组信息是否存放在主存内。

2、虚拟内存基于对空间的重定义的,即把空间定义为“连续的虚拟内存”,以借此“*”程序,使它们以为自己正在使用一大块的“连续”。

参考资料来源:百度百科—物理内存

参考资料来源:百度百科—虚拟内存

四、VMware虚拟机内存分配多少合适

按照1.5-2的比例来划分比较合适。

在vmware中,虚拟系统的内存是可以更改的,关键看你虚拟系统是什么版本及需要运行测试哪些软件,感觉慢了就调大一点,但处于运行状态的虚拟机的内存总和不要大于母系统内存的70%。

虚拟内存是在硬盘中主要用来为物理内存更快的读取数据服务的,但是虚拟内存并不是越大越好,因为硬盘的数据存取速度远远比不上内存,所以虚拟内存的加速作用是有局限*的。

如果太大的话读取很慢,反而会降低系统运行速度,虚拟内存小也不能很好的起到虚拟内存的作用,所以一般虚拟内存是按照1.5-2的比例来划分的,但是如果2g的物理内存的话建议3g虚拟就可以了。

扩展资料

针对VMware虚拟机电源管理,微软和VMware虚拟机采取了非常相似的方式。这两种方式都是基于某些最基本的服务器虚拟化概念。

尽管单台hypervisor完全能够运行多台VMware虚拟机,但生产环境中从未仅使用单台hypervisor。管理员通常不会承受hypervisor成为单点故障的风险。

因此,大多数hypervisor,比如VMware虚拟机 ESXi和微软Hyper-V都构建了集群。这样一来,如果一台hypervisor出现故障,那么集群中的其他hypervisor能够继续运行来自故障集群节点的虚拟机。

其他情况下,管理员移动VMware虚拟机可能是因为他认为该VMware虚拟机在具有更多可用硬件资源的主机之上运行,能够运行的更好。

微软和VMware都创建了负载均衡,用于将正在运行的VMware虚拟机动态迁移至不同的主机,这样能够以允许VMware虚拟机尽可能高效运行的方式使用硬件资源。

然而同样的概念反过来可以节省功耗。并非在所有可用的主机服务器上都有VMware虚拟机在运行,工作负载可以被整合到最少的主机服务器上,这样可以将未被使用的主机服务器置于离线状态以降低功耗。

参考资料:百度百科--VMware虚拟机