• 关于

    服务器增加内存32g

    的搜索结果

问题

ECS增加1核8G、2核16G、4核32G等三款配置

qilu 2019-12-01 21:13:40 19332 浏览量 回答数 29

回答

对于新手用户来说,对云阿里云产品和配置的选择,首先应该跟自己的网站、APP开发人员或者开发商协商决定,如果没有相关人员,不知道如何选择自己的阿里云服务器配置,可以参考以下推荐购买: 一:普通的个人小型网站,个人博客等小流量网站 可选择低配置的阿里云服务器 推荐配置:CPU:1核、内存1G或2G、硬盘40G、带宽:1M或2M 二:论坛、门户类网站 论坛、门户类网站,用户活跃性与访问量较高,需要有足够的服务器资源空间和带宽,提升访问速度。 推荐配置:CPU:2核、内存:4G、硬盘200-500G、带宽:5-10M 三:品牌官网类网站 对官网、品牌较为重视的政府、企业等, 需要保证网站浏览更加流利顺畅,提升政府、品牌形象。 推荐配置:CPU:4核、内存:8G、硬盘150G、带宽:5M 四:视频、购物类网站:视频、购物类网站 包含庞大的数据信息, 需要保证迅速的信息处理能力保证网站的点播、交易正常进行。 推荐配置:CPU:8核、内存:16G、硬盘300G以上、带宽:10M以上 五:游戏、软件类网站 对开发、测试、环境要求较高的游戏软件类网站,需要较高的资源配置带来更强劲的计算性能,保证业务需求。 推荐配置:CPU:16核、内存:32G、硬盘:500G、带宽:10M以上 当然,配置不是固定,一层不变的,后期随着业务的增加,可以随时利用云服务器的弹性伸缩能力增加配置,参考资料:升降配方式汇总 另外,如果是新用户推荐通过阿里云-云小站领取最新代金券(新用户福利),在实际购买的时候可以抵扣部分订单,节约部分成本开支。

售备案域名 2019-12-18 09:55:53 0 浏览量 回答数 0

问题

greenplum使用gpfdist导入数据性能问题

postgres_up 2019-12-01 19:39:00 4972 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

我想很多朋友会发现自己的mysql占用一大量的内在与cpu了,解决这个问题我们大多会直接减少mysql访问与连接次数,直接生成静态或缓存文件,下面我还有更多办法来解决mysql占高CPU与内存的办法。 为了装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 默认为2Minnodb_flush_log_at_trx_commit=0 等到innodb_log_buffer_size列队满后再统一储存,默认为1innodb_log_buffer_size=4M 默认为1Minnodb_thread_concurrency=8 你的服务器CPU有几个就设置为几,默认为8key_buffer_size=256M 默认为218 调到128最佳tmp_table_size=64M 默认为16M 调到64-256最挂read_buffer_size=4M 默认为64Kread_rnd_buffer_size=16M 默认为256Ksort_buffer_size=32M 默认为256Kmax_connections=1024 默认为1210试验一:table_cache=512或1024innodb_additional_mem_pool_size=2Minnodb_flush_log_at_trx_commit=0innodb_log_buffer_size=1Minnodb_thread_concurrency=8 你的服务器CPU有几个就设置为几,默认为8key_buffer_size=128Mtmp_table_size=128Mread_buffer_size=64K或128Kread_rnd_buffer_size=256Ksort_buffer_size=512Kmax_connections=1024试验二:table_cache=512或1024innodb_additional_mem_pool_size=8Minnodb_flush_log_at_trx_commit=0innodb_log_buffer_size=4Minnodb_thread_concurrency=8key_buffer_size=128Mtmp_table_size=128Mread_buffer_size=4Mread_rnd_buffer_size=16Msort_buffer_size=32Mmax_connections=1024一般:table_cache=512innodb_additional_mem_pool_size=8Minnodb_flush_log_at_trx_commit=0innodb_log_buffer_size=4Minnodb_thread_concurrency=8key_buffer_size=128Mtmp_table_size=128Mread_buffer_size=4Mread_rnd_buffer_size=16Msort_buffer_size=32Mmax_connections=1024经过测试.没有特殊情况,最好还是用默认的.2G内存,针对站多,抗压型的设置,最佳:table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳innodb_additional_mem_pool_size=4M 默认为2Minnodb_flush_log_at_trx_commit=1(设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1)innodb_log_buffer_size=2M 默认为1Minnodb_thread_concurrency=8 你的服务器CPU有几个就设置为几,建议用默认一般为8key_buffer_size=256M 默认为218 调到128最佳tmp_table_size=64M 默认为16M 调到64-256最挂read_buffer_size=4M 默认为64Kread_rnd_buffer_size=16M 默认为256Ksort_buffer_size=32M 默认为256Kmax_connections=1024 默认为1210thread_cache_size=120 默认为60query_cache_size=64M优化mysql数据库性能的十个参数(1)、max_connections:允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 too many connections 错误。 默认数值是100,我把它改为1024 。(2)、record_buffer:每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128k),我把它改为16773120 (16m)(3)、key_buffer_size:索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你 能负担得起那样多。如果你使它太大,系统将开始换页并且真的变慢了。默认数值是8388600(8m),我的mysql主机有2gb内存,所以我把它改为 402649088(400mb)。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 的值了。默认数值是50,我把它改为500。(5)、interactive_timeout:服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 client_interactive 选项的客户。 默认数值是28800,我把它改为7200。(6)、sort_buffer:每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速order by或group by操作。默认数值是2097144(2m),我把它改为 16777208 (16m)。(7)、table_cache:为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。mysql对每个唯一打开的表需要2个文件描述符。默认数值是64,我把它改为512。(8)、thread_cache_size:可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高性能可 以这个变量值。通过比较 connections 和 threads_created 状态的变量,可以看到这个变量的作用。我把它设置为 80。(9)mysql的搜索功能用mysql进行搜索,目的是能不分大小写,又能用中文进行搜索只需起动mysqld时指定 --default-character-set=gb2312(10)、wait_timeout:服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800,我把它改为7200。注:参数的调整可以通过修改 /etc/my.cnf 文件并重启 mysql 实现。这是一个比较谨慎的工作,上面的结果也仅仅是我的一些看法,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改。

我的中国 2019-12-02 01:33:22 0 浏览量 回答数 0

回答

第一种OutOfMemoryError: PermGen space发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。解决这类问题有以下两种办法:增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小。如针对tomcat6.0,在catalina.sh 或catalina.bat文件中一系列环境变量名说明结束处(大约在70行左右) 增加一行: JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m" 如果是windows服务器还可以在系统环境变量中设置。感觉用tomcat发布sprint+struts+hibernate架构的程序时很容易发生这种内存溢出错误。使用上述方法,我成功解决了部署ssh项目的tomcat服务器经常宕机的问题。清理应用程序中web-inf/lib下的jar,如果tomcat部署了多个应用,很多应用都使用了相同的jar,可以将共同的jar移到tomcat共同的lib下,减少类的重复加载。这种方法是网上部分人推荐的,我没试过,但感觉减少不了太大的空间,最靠谱的还是第一种方法。第二种OutOfMemoryError: Java heap space发生这种问题的原因是java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。解决这类问题有两种思路:检查程序,看是否有死循环或不必要地重复创建大量对象。找到原因后,修改程序和算法。 我以前写一个使用K-Means文本聚类算法对几万条文本记录(每条记录的特征向量大约10来个)进行文本聚类时,由于程序细节上有问题,就导致了Java heap space的内存溢出问题,后来通过修改程序得到了解决。增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m第三种OutOfMemoryError:unable to create new native thread在java应用中,有时候会出现这样的错误:OutOfMemoryError: unable to create new native thread.这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。那么是什么原因造成这种问题呢?每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。给出一个有关能够创建线程的最大个数的估算公式:(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads对于jdk1.5而言,假设操作系统保留120M内存:1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads对于栈大小为256KB的jdk1.4而言,1.5GB allocated to JVM: ~1520 threads1.0GB allocated to JVM: ~3520 threads 对于这个异常我们首先需要判断下,发生内存溢出时进程中到底都有什么样的线程,这些线程是否是应该存在的,是否可以通过优化来降低线程数; 另外一方面默认情况下java为每个线程分配的栈内存大小是1M,通常情况下,这1M的栈内存空间是足足够用了,因为在通常在栈上存放的只是基础类型的数据或者对象的引用,这些东西都不会占据太大的内存, 我们可以通过调整jvm参数,降低为每个线程分配的栈内存大小来解决问题,例如在jvm参数中添加-Xss128k将线程栈内存大小设置为128k。

蛮大人123 2019-12-02 02:27:59 0 浏览量 回答数 0

问题

ECS云服务器产品优化

ecs优化 2019-12-01 21:34:28 13425 浏览量 回答数 0

回答

Rediscuz服务器配置求助 纠正一下错误,阿里云ecs半年免费活动已经结束。 下面仅仅是个人的一个推荐,仅供参考。 本人绝没有故意误导之嫌疑。 看了一下,你目前网站访问量很少,  < 10000pv 那么,正常情况下,你使用阿里云最低配的云服务器ecs完全能满足需要。 下面是推荐配置: linux系统,512M内存+单核+10G数据盘+1M带宽 winserver2003 (不安全,不推荐,微软已经停止维护)  1G  + 单核 + 10G数据盘  + 1M带宽 inserver2008 1G + 双核cpu  + 数据盘10G + 1M带宽 不过有1点比较注意: 如果网站存在大量下载的附件或者图片,最好存放在oss,这样不会浪费你的带宽,增加网站打开速度。 另外,你如果是技术控或者爱折腾的人,可以使用一下阿里云的高性能构架哦。 oss(可以开启cdn) + ecs(内网的很便宜) + rds (数据库、免费送的) + SLB(负载均衡、满足条件送200体验券) 你只要有两台内网ecs阿里云会送200元的slb的使用券。注意内网的ecs是很便宜的,这样算下来基本上用的钱也不多的哇。 ------------------------- 回5楼wgrid.cn的帖子 抱歉这个半年免费活动我以为还在呢。因为新注册才有这个活动,我也老会员了,也就没关注了。 关于配置,或许很多人希望高大上,我们公司技术总监口气也很大,随便就是16核32g之类高配云云的就来了,其实很多情况没必要那么好,找到性能瓶颈就ok。你想想,我们以前用vps时代或者甚至虚拟主机的时候,一天上万ip都扛得起。不要小看了入门级的云服务器,实际上性能还是杠杠的。2000pv的访问量,512M足够应付,开启虚拟内存损耗一点硬盘完全可以让内存过载使用。如果你认为不行,完全可以尝试,云服务器不是可以弹性扩容吗? 另外关于配置的问题,我给你看我一个测试网站。 你才2000的pv  这个是一个测试站,数据也和你差不多。pv量也是稳定在6000到10000pv 这个服务器一共运行了3个站: zhshare zhanmishu playzhan 加上www 和 com可以访问,没必要广告就不发网址了。 下面是其中一个网站数据: 下面是服务器数据,配置是1G+1核心+2M  (但是带宽基本上只用了1M):

玩站网 2019-12-02 02:20:07 0 浏览量 回答数 0

问题

【推荐】Windows虚拟内存不足问题的处理方法是什么

boxti 2019-12-01 22:06:24 3441 浏览量 回答数 0

回答

一、内存溢出类型 1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况) set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、java.lang.OutOfMemoryError: Java heap space 第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。 注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。 垃圾回收GC的角色 JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收: 当应用程序线程空闲;另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆不足的问题时,就会报out of memory错误。因为这个异常根据系统运行环境决定,所以无法预期它何时出现。 根据GC的机制,程序的运行会引起系统运行环境的变化,增加GC的触发机会。 为了避免这些问题,程序的设计和编写就应避免垃圾对象的内存占用和GC的开销。显示调用System.GC()只能建议JVM需要在内存中对垃圾对象进行回收,但不是必须马上回收, 一个是并不能解决内存资源耗空的局面,另外也会增加GC的消耗。 二、JVM内存区域组成 简单的说java中的堆和栈 java把内存分两种:一种是栈内存,另一种是堆内存 1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配; 2。堆内存用来存放由new创建的对象和数组 在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理 堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。缺点就是要在运行时动态分配内存,存取速度较慢; 栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活性。 java堆分为三个区:New、Old和Permanent GC有两个线程: 新创建的对象被分配到New区,当该区被填满时会被GC辅助线程移到Old区,当Old区也填满了会触发GC主线程遍历堆内存里的所有对象。Old区的大小等于Xmx减去-Xmn java栈存放 栈调整:参数有+UseDefaultStackSize -Xss256K,表示每个线程可申请256k的栈空间 每个线程都有他自己的Stack 三、JVM如何设置虚拟内存 提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 提示:JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 提示:假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。 简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制, 这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了 提示:注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。 提示:设置NewSize、MaxNewSize相等,"new"的大小最好不要大于"old"的一半,原因是old区如果不够大会频繁的触发"主" GC ,大大降低了性能 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64; 由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 解决方法:手动设置Heap size 修改TOMCAT_HOME/bin/catalina.bat 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 四、性能检查工具使用 定位内存泄漏: JProfiler工具主要用于检查和跟踪系统(限于Java开发的)的性能。JProfiler可以通过时时的监控系统的内存使用情况,随时监视垃圾回收,线程运行状况等手段,从而很好的监视JVM运行情况及其性能。 1. 应用服务器内存长期不合理占用,内存经常处于高位占用,很难回收到低位; 2. 应用服务器极为不稳定,几乎每两天重新启动一次,有时甚至每天重新启动一次; 3. 应用服务器经常做Full GC(Garbage Collection),而且时间很长,大约需要30-40秒,应用服务器在做Full GC的时候是不响应客户的交易请求的,非常影响系统性能。 因为开发环境和产品环境会有不同,导致该问题发生有时会在产品环境中发生,通常可以使用工具跟踪系统的内存使用情况,在有些个别情况下或许某个时刻确实是使用了大量内存导致out of memory,这时应继续跟踪看接下来是否会有下降, 如果一直居高不下这肯定就因为程序的原因导致内存泄漏。 五、不健壮代码的特征及解决办法 1、尽早释放无用对象的引用。好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露。 对于仍然有指针指向的实例,jvm就不会回收该资源,因为垃圾回收会将值为null的对象作为垃圾,提高GC回收机制效率; 2、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域; String str = "aaa"; String str2 = "bbb"; String str3 = str + str2;//假如执行此次之后str ,str2以后再不被调用,那它就会被放在内存中等待Java的gc去回收,程序内过多的出现这样的情况就会报上面的那个错误,建议在使用字符串时能使用StringBuffer就不要用String,这样可以省不少开销; 3、尽量少用静态变量,因为静态变量是全局的,GC不会回收的; 4、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。 这是一个案例想定供大家警戒 使用jspsmartUpload作文件上传,运行过程中经常出现java.outofMemoryError的错误, 检查之后发现问题:组件里的代码 m_totalBytes = m_request.getContentLength(); m_binArray = new byte[m_totalBytes]; 问题原因是totalBytes这个变量得到的数极大,导致该数组分配了很多内存空间,而且该数组不能及时释放。解决办法只能换一种更合适的办法,至少是不会引发outofMemoryError的方式解决。 5、尽量运用对象池技术以提高系统性能;生命周期长的对象拥有生命周期短的对象时容易引发内存泄漏,例如大集合对象拥有大数据量的业务对象的时候,可以考虑分块进行处理,然后解决一块释放一块的策略。 6、不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。可以适当的使用hashtable,vector 创建一组对象容器,然后从容器中去取那些对象,而不用每次new之后又丢弃 7、一般都是发生在开启大型文件或跟数据库一次拿了太多的数据,造成 Out Of Memory Error 的状况,这时就大概要计算一下数据量的最大值是多少,并且设定所需最小及最大的内存空间值。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:16:21 0 浏览量 回答数 0

回答

回 1楼(hilyjiang) 的帖子 精彩持续不断,先留个悬念~欢迎随时来阿里云论坛逛逛 ------------------------- 回 9楼(qzhsky) 的帖子 不是的哦,请仔细查看规则说明6、“免费升级”订单支付成功后请核查当前您的云服务器配置(a.当前剩余服务期限内内存和带宽是否增加;b.当前服务到期后赠送1M带宽自动降级;内存不做降级)和服务时长(是否延长一个月),如有异议请及时提交售后支持工单 。 ------------------------- 回 10楼(qzhsky) 的帖子 不用担心的亲,降级的功能正在开发实现中,同时请查看规则:6、“免费升级”订单支付成功后请核查当前您的云服务器配置(a.当前剩余服务期限内内存和带宽是否增加;b.当前服务到期后赠送1M带宽自动降级;内存不做降级)和服务时长(是否延长一个月),如有异议请及时提交售后支持工单 。 ------------------------- 回 20楼(adppl) 的帖子 当然可以参与的,只要活动期间续费大于6个月,之前的服务期限一并升级上去的哦,比如:7月15日购买1个月,今天续费6个月,2013年2月15到期,7月26号支付“免费升级”订单,您将得到:1个月服务时长赠送 2013年2月15之前所有的期限内存增加0.5G,带宽赠送1M,之后带宽回到升级前,内存不变,后续续费以官网最新价格为准 ------------------------- 回 29楼(at5004m9w) 的帖子 您好!请您查看活动流程说明: 1、完成新购或续费6个月(含)以上经济A型、经济B型及标准A型云服务器订单支付(注: 新购或续费订单必须于7月16日00:00-7月25日24:00支付成功) 2、7月26日系统自动创建“免费升级“类型的0元订单,届时请您登陆阿里云账号,进入“用户中心”-“我的账户”-“订单”查看(“免费升级”订单请在8月1日前完成支付) ]3、完成0元订单支付 4、免费获得配置升级和服务器延长一个月服务 ------------------------- 回 32楼(luzhihuang) 的帖子 等您来续费哦~ ------------------------- 回 39楼(qntong) 的帖子 很抱歉,不可以 不过如果您续费6个月,会赠送一个月使用时间 当前所有服务期限内(2013年5月30日 7个月)的内存和带宽均免费升级,期待您的支持和参与 ------------------------- 回 56楼(ap0588f3d) 的帖子 对滴,提交免费升级订单时候当前所有的服务期限配置都会升级(经济型升级内存 带宽;标准型升级内存) ------------------------- 回 67楼(yiweimi) 的帖子 别着急嘛,活动持续竞猜,请经常来论坛逛逛哦 ------------------------- 回 68楼(yiweimi) 的帖子 目前不支持降级的哦,不过这个功能值得期待,请经常来论坛逛逛哦 ------------------------- 回 69楼(hlong) 的帖子 必须会心动啊亲~现在续费6个月您将得到1个月服务赠送,内存升级,带宽赠送,还等什么呀~~ ------------------------- 回 80楼(hdcyly) 的帖子 26号记得支付免费升级0元订单,嘿嘿~ ------------------------- [第一波规则修改说明]云服务器免费升级,加“量”不加价! 应广大支持阿里云用户的需求,第一波的规则做如下变更:当前服务到期时赠送1M带宽不做降级(原规则:当前服务到期后赠送1M带宽自动降级) 修改后内容如下: 6、“免费升级”订单支付成功后请核查当前您的云服务器配置(a.当前剩余服务期限内内存和带宽是否增加;b.当前服务到期时赠送1M带宽不做降级;内存不做降级)和服务时长(是否延长一个月),如有异议请及时提交售后支持工单 。 温馨提醒:活动结束后新购或续费云服务器产品价格以阿里云官网售价为准,为确保您的利益,请在提交订单后及时核对并结算。 ------------------------- 回 43楼(sky2g) 的帖子 亲,请查看 中小站长扶持计划第二波:阿里云备案免费啦~~ ------------------------- 回 89楼(iwill) 的帖子 给力给力!炎炎夏日,清爽来袭~~~ ------------------------- 回 94楼(xinicn) 的帖子 别担心: 云服务器近期功能优化预告,敬请期待! 看这个你就安心啦~ ------------------------- 回 98楼(xuwen) 的帖子 别担心: 云服务器近期功能优化预告,敬请期待 ! 看这个你就安心啦~ ------------------------- 回 128楼(n5ken) 的帖子 请耐心等待哈~带宽升级需要点时间,注意核查,有问题请提交售后工单,别担心哦 ------------------------- 回 132楼(yusuf) 的帖子 请耐心等待哈~带宽升级需要点时间,注意核查,有问题请提交售后工单,别担心哦

fanyue88888 2019-12-02 03:16:24 0 浏览量 回答数 0

回答

回 1楼(ivmmff) 的帖子 谢谢,也就是说内存够用的情况下,增加内存不会提升网站打开速度了? 我的网站访客来源主要是百度等搜索引擎,基本上是2-3分钟来一个访客,比较均匀,同时在线人数很低很低,我看过最高也就4-5个人同时在线吧,大多数时间是1个人同时在线 如果内存够用的情况下降低内存对速度没影响的话,就准备降配续费了,1核1G每月45元,1核512M每月32元,能节约13元 2个月的1核1G费用约=3个月1核512M的费用,我是不是有点太精打细算了 ------------------------- 回 2楼(oec.liao) 的帖子 还好我的网站图片那些是存在又拍云上,没有什么下载的东西 ------------------------- 回 5楼(ivmmff) 的帖子 我也想用好配置,至少配置说出去都大气些,无奈网站还没有带来任何收入,所以能节约就节约吧 ------------------------- 回 8楼(梦丫头) 的帖子 有道理,希望降配升配不会影响磁盘性能,老天保佑 ------------------------- 回 10楼(孤城) 的帖子 好的,我的是下个月29号到期,因为之前被送了不少代金劵,为不让代金劵过期,就都续上费了,服务器现在还有1个月才到期 阿里云的带宽按流量计费确实帮我这种流量不大的网站省了很多费用,又能保证充足的带宽

一如繁星 2019-12-02 03:18:49 0 浏览量 回答数 0

回答

Re求助:使用SLB后网站加载图片非常慢! 怀疑是阿里云的IO原因,跟技术沟通:他检查了IO说没问题,肯定不是这个IO的问题,说有可能是我图片服务器文件量太大,文件过多,用户访问的时候需要一层一层索引,比如: ,先找到operation、然后进入lqwyerad、找到好几层才找到图片。随后我直接把几张图片放到网站根目录,用域名或者ip地址访问也是很慢。 技术建议使用它们的开放存储OSS。目前正准备试试。 大家有什么好的建议,请告诉我,非常感谢!!!!!!!!! ------------------------- 回2楼billlee的帖子 是与SLB无关,我就是直接用这台图片服务器的IP地址访问本服务器中的图片,打开也是非常慢,要加载很久。我在使用阿里云之前,服务器是托管的,那时候打开图片的速度却是非常快的。这是怎么回事呢?希望有这方面经验的人给指点,谢谢!!!!! ------------------------- Re求助:使用SLB后网站加载图片非常慢! 是啊,这台服务器就放了图片,装了apache,没有其它的服务,我的图片总大小为13G左右!为什么这么慢?难道真的像阿里客服所说:是服务器文件量太大,文件过多,用户访问的时候需要一层一层索引导致??? ------------------------- 回10楼xuanmin的帖子 技术检查了,说这台服务器资源很空闲,io也很低!!内存用的是32G,cpu8核,带宽15M,这些资源使用率都很低 ------------------------- 回7楼gdliwt的帖子 感谢你的回复,我的同一级目录下应该没有超过1000张图片的,不过就是目录太多,比如《h ttp://images.fabao365.com/operation/lawyerad/2013/03/19/201303190934390.73972600.jpg》 ------------------------- 回13楼水元素的帖子 网站图片会不断增加,如果超过32G后那还是得放磁盘里! ------------------------- 回15楼水元素的帖子 谢谢水元素,您的建议非常有效。能告诉我怎么把图片放入缓存里吗?是用memcache吗???? ------------------------- Re求助:使用SLB后网站加载图片非常慢! 感谢楼上几位朋友的建议!!!!! ------------------------- 回18楼sunfei的帖子 目前OSS的价格还是太贵了,我尝试过用OSS,在首页只放了一张图片,半天就消费了0.25元,这要是把所有的图片都使用OSS,一天估计会消费好几百!! ------------------------- 回21楼sunfei的帖子 图片自己存在阿里云服务器上,打开页面加载图片至少也要10多秒!现在只能少用一台阿里云,把图片存到我们公司自己的服务器上了(服务器托管在机房) ------------------------- Re求助:使用SLB后网站加载图片非常慢! 感谢大家的回复,现在我的图片是放在自己的服务器上的,阿里云放图片实在是不行,OSS的价格又太贵,所以还是放在公司自己的服务器上吧!

likelike 2019-12-02 01:02:02 0 浏览量 回答数 0

回答

回1楼tftaxis的帖子 带宽质量确实是优势,磁盘虽然不是会经常这么大的io。但是,偶尔还是会有的,当遇到时,只会让人崩溃。木桶最短一块。 我现在一共迁移 500G 数据,昨天下午做到现在了。导入个 1 G数据库,用了快 1 小时。 云主机并不是一定质量比 vps 更差,而且差得这么多。现在因为阿里云在国内没有像样的对手,也只有用它了。 发这玩意儿,只是希望它老人家能倾听下用户的声音,这个磁盘速度,不管是硬件太差,还是程序限制,都是不应该这么低的。 如果云主机就是简单的把总1000M写入,划分为 100 个用户,每个 10 m,那也太没技术含量了。 ------------------------- 回4楼ap6214f2r的帖子 不止一家在用vm虚拟化技术。 怎么有那么多人,做为用户,却很喜欢为阿里云着想。 这个问题实在有点搞不懂。 ------------------------- 回9楼ap6214f2r的帖子 你这个思维才错了。 假设只能容纳 10 个人的房子,偏要合租 100 个人。现在有房客要求增加空间,当然就是要求房东把房子搞大点,或者一个房子里少租几个人,而不是说增加一个人的空间,把其它人的减小。 现在是希望阿里云提高上限,保证下限,并不是说要牺牲其它人的利益。假如阿里云只有靠影响其它用户来提升这个性能,要么是它严重超卖了,要么是系统本身不能突破这个瓶颈。 ------------------------- Re阿里云这磁盘速度,简直崩溃了 论坛搅混水的太多了,不说这个话题了,上微博。 ------------------------- 回13楼ap6214f2r的帖子 完全被你的经验打败了。 ------------------------- 回16楼frankwangzy1104的帖子 我也有用rds,确实性能更好,但这是两回事。 ------------------------- Re阿里云这磁盘速度,简直崩溃了 解压一个 500 多m的文件,截图: ------------------------- 回22楼ap1598f4m的帖子 是 3.5 M 吧? 阿里云别光顾每天搞活动,拉用户,先搞好基础建设,严重超卖。 ------------------------- 回 41楼(sunfei) 的帖子 公司做数据分析,高配、低配,差不多20台,各占一半,从1G到32G的都有。本来想着用云,方便管理,升级灵活。其它方面都不错,就是越用越被io吓到了,以前还是在云服务器上装数据库,后来只有全买RDS了。 另外我发现,1G和32G内存的,io性能差不多。 ------------------------- 回 45楼(gdliwt) 的帖子 主要是cpu上的差别。磁盘性能一样。

cmsns 2019-12-01 23:13:53 0 浏览量 回答数 0

回答

本文介绍云服务器ECS在产品功能和服务性能上的不同限制,以及如何申请更高配额。 限制概述 使用云服务器ECS有下列限制: 不支持安装虚拟化软件和二次虚拟化(例如安装使用VMware Workstation)。仅弹性裸金属服务器和超级计算集群支持二次虚拟化。 不支持声卡应用。 不支持直接加载外接硬件设备(如硬件加密狗、U盘、外接硬盘、银行U key等),您可以尝试软件加密狗或者动态口令二次验证等。 不支持多播协议。如果需要使用多播,建议改为使用单播点对点方式。 日志服务不支持32位Linux系统云服务器。 如何查看日志服务支持的云服务器系统,请参见Logtail简介。 如果云服务器需要备案,则云服务器有购买要求,且每台ECS实例可申请的备案服务号数量有限。详情请参见备案服务器(接入信息)准备与检查。备案流程请参见ICP备案流程概述。 查看配额 您可以在ECS控制台概览页面查看权益配额,支持查看某一地域中的部分资源使用情况和配额。如果某项资源的配额无法满足业务需求,请提交工单申请提升配额。查看权益配额的详细步骤请参见查看配额或DescribeAccountAttributes。 权益配额 实例 限制项 普通用户限制 提升限额方式 创建ECS实例的用户限制 实名认证 无 创建按量付费资源的限制 账户余额、代金券和信用度之和不得小于100元 提交工单 可以创建按量付费实例的规格 vCPU核数少于16(不含16)的实例规格 提交工单 一个账号在每个地域的按量付费实例的总vCPU配额 50 vCPU 提交工单 一个账号在每个地域的抢占式实例配额 50 vCPU 提交工单 一个账号在每个地域的实例启动模板数量 30 无 一个实例启动模板中的版本数量 30 无 按量付费转包年包月 以下实例规格(族)不支持:t1、s1、s2、s3、c1、c2、m1、m2、n1、n2、e3 无 包年包月转按量付费 是否支持此功能根据您的云服务器使用情况而定 每月5000 vCPU小时 每月有最大退款额度限制,额度以转换页面显示为准 无 预留实例券 限制项 普通用户限制 提升限额方式 一个账号的地域级预留实例券数量 20 提交工单 一个账号在一个可用区的可用区级预留实例券数量 20 提交工单 预留实例券支持的实例规格 sn1ne、sn2ne、se1ne、ic5、c5、g5、r5、c6、g6、r6、i2、i2g、hfc5、hfg5和t5 说明 t5只支持可用区级预留实例券。 无 说明 更多详情,请参见预留实例券使用限制。 块存储 限制项 普通用户限制 提升限额方式 创建按量付费云盘的用户限制 账号必须实名认证,而且账户余额、代金券和信用度之和不得小于100元 无 一个账号在所有地域的按量付费云盘数量配额 账号下所有地域的实例数量5,每个账号最少可以创建10块按量付费云盘 提交工单 一个账号用作数据盘的按量付费云盘容量配额 和云服务器使用情况、地域、云盘类型有关,您可以在权益配额页面查看,详细步骤请参见查看配额 提交工单 单实例系统盘数量 1 无 单实例数据盘数量 16块(包括云盘和共享块存储) 无 单块共享块存储允许同时挂载的实例数量 8 无 单个账号在全地域的共享块存储配额 10 提交工单 单块普通云盘容量 5GiB~2000GiB 无 单块SSD云盘容量 20GiB~32768GiB 无 单块高效云盘容量 20GiB~32768GiB 无 单块ESSD云盘容量 20GiB~32768GiB 无 单块SSD本地盘容量 5GiB~800GiB 无 单实例SSD本地盘总容量 1024GiB 无 单块NVMe SSD本地盘容量 1456GiB 无 单实例NVMe SSD本地盘总容量 2912GiB 无 单块SATA HDD本地盘容量 5500GiB 无 单实例SATA HDD本地盘总容量 154000GiB 无 单块SSD共享块存储 32768GiB 无 单实例SSD共享块存储总容量 128TiB 无 单块高效共享块存储 32768GiB 无 单实例高效共享块存储总容量 128TiB 无 系统盘单盘容量限制 Windows Server:40~500GiB CoreOS与FreeBSD:30~500GiB 其他Linux:20~500GiB 无 本地盘实例是否可以自行挂载新的本地盘 不允许 无 本地盘实例是否支持变更配置 仅允许变更带宽 无 系统盘挂载点范围 /dev/vda 无 数据盘挂载点范围 /dev/vd[b-z] 无 说明 块存储按照二进制单位计算。二进制单位用于表示1024进位的数据大小。例如,1GiB=1024MiB。 存储容量单位包 限制项 普通用户限制 提升配额方式 一次可以购买的存储容量单位包最大容量 50TiB 提交工单 一个存储容量单位包的能设置的最大生效时长 3年 无 存储容量单位包支持的云盘类型 ESSD云盘、SSD云盘、高效云盘和普通云盘 无 快照 限制项 普通用户限制 提升限额方式 每块云盘或共享块存储可以保留的手动快照个数 256 无 每块云盘或共享块存储可以保留的自动快照个数 1000 无 一个账号在一个地域可以保留的自动快照策略数量 100 无 镜像 限制项 普通用户限制 提升限额方式 一个账号在一个地域的保有自定义镜像配额 100 提交工单 单个镜像最多可共享的用户数量 50 提交工单 镜像与实例规格的限制 4GiB及以上内存的实例规格不能使用32位镜像 无 SSH密钥对 限制项 普通用户限制 提升限额方式 一个账号在每个地域的SSH密钥对配额 500 无 支持SSH密钥对的实例规格 仅系列I的非I/O优化实例不支持 无 支持SSH密钥对的镜像类型 仅支持Linux系统 无 公网带宽 限制项 普通用户限制 提升限额方式 入带宽峰值 当所购出带宽峰值小于等于10Mbit/s时,阿里云会分配10Mbit/s入方向带宽 当所购出带宽峰值大于10Mbit/s时,阿里云会分配与购买的出带宽峰值相等的入方向带宽 无 出带宽峰值 按使用流量计费:100Mbit/s 按固定带宽计费: 包年包月实例:200Mbit/s 按量付费实例:100Mbit/s 无 单实例更换分配的公网IP地址的限制 新建实例六小时内可以更换公网IP地址,一台实例最多可以更换三次 无 安全组 限制项 普通安全组限制 企业安全组限制 一个账号在一个地域可以创建的安全组数量 100 与普通安全组相同 一个经典网络类型的安全组能容纳的经典网络类型ECS实例数量 1000* 不支持经典网络 一个专有网络VPC类型的安全组能容纳的VPC类型ECS实例数量 不固定,受安全组能容纳的私网IP地址数量影响 无限制 一台ECS实例可以加入的安全组数量 5 如需提高上限,请提交工单,可以增加到10个或者16个安全组 与普通安全组相同 一台ECS实例的每张弹性网卡可以加入的安全组数量 一个安全组最大规则数量(包括入方向规则与出方向规则) 200*** 与普通安全组相同 一张弹性网卡在所有已加入的安全组中的最大规则数量(包括入方向规则与出方向规则) 1000 与普通安全组相同 一个专有网络VPC类型的安全组能容纳的私网IP地址数量 2000** 65536 公网访问端口 出方向的STMP默认端口25默认受限,而且不能通过安全组规则打开。关于如何申请解封,请参见TCP 25端口控制台解封申请。 与普通安全组相同 * 如果您有超过1000台经典网络类型ECS实例需要内网互访,可以将ECS实例分配到多个安全组内,并通过互相授权的方式允许互访。 ** 如果您有超过2000个私网IP需要内网互访,可以将这些私网IP的ECS实例分配到多个安全组内,并通过互相授权的方式允许互访。 *** 如果您提高了一台ECS实例的可以加入的安全组数量限制,相应的安全组最大规则数量会下降。该实例可加入的安全组数量乘以每个安全组入方向和出方向规则最大数量必须小于等于1000。即5200=1000、10100=1000、16*60≤1000。 部署集 限制项 普通用户限制 提升限额方式 一个账号在一个地域内的部署集配额 2 无 一个部署集内能容纳的实例数量 一个可用区内最多允许7台实例,一个地域内允许7*(可用区数量)的实例数量 无 部署集内能创建的实例规格 c5、d1、d1ne、g5、hfc5、hfg5、i2、ic5、r5、se1ne、sn1ne和sn2ne 无 云助手 限制项 普通用户限制 提升限额方式 一个账号在一个阿里云地域下能创建的云助手命令数量 100 提交工单 一个账号在一个阿里云地域下每天能运行的云助手命令数量 5000 提交工单 弹性网卡 限制项 普通用户限制 提升限额方式 一个账号在一个地域的弹性网卡配额 100 提交工单 标签 限制项 普通用户限制 提升限额方式 单台实例允许绑定的标签数量 20 无 API 限制项 普通用户限制 提升限额方式 CreateInstance调用次数 一分钟内最多200次 提交工单

1934890530796658 2020-03-24 14:02:50 0 浏览量 回答数 0

问题

centos6.5安装oraclexe11g完全教程分享

何懮 2019-12-01 21:44:36 10535 浏览量 回答数 4

问题

centos6.5安装oraclexe11g完全教程分享

何懮 2019-12-01 21:44:35 10535 浏览量 回答数 0

回答

一、NGINX 502错误排查 NGINX 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手: 1.FastCGI进程是否已经启动 2.FastCGI worker进程数是否不够 运行 netstat -anpo | grep “php-cgi” | wc -l 判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少 3.FastCGI执行时间过长 根据实际情况调高以下参数值 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; 4.FastCGI Buffer不够 nginx和apache一样,有前端缓冲限制,可以调整缓冲参数 fastcgi_buffer_size 32k; fastcgi_buffers 8 32k; 5.Proxy Buffer不够 如果你用了Proxying,调整 proxy_buffer_size   16k; proxy_buffers    4 16k; 参见:http://www.server110.com 6.https转发配置错误 正确的配置方法 server_name www.mydomain.com; location /myproj/repos { set $fixed_destination $http_destination; if ( $http_destination ~* ^https(.*)$ ) { set $fixed_destination http$1; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Destination $fixed_destination; proxy_pass http://subversion_hosts; } 当然,还要看你后端用的是哪种类型的FastCGI,我用过的有php-fpm,流量约为单台机器40万PV(动态页面), 现在基本上没有碰到502。 7.php脚本执行时间过长 将php-fpm.conf的<value name="request_terminate_timeout">0s</value>的0s改成一个时间 二、Nginx 413错误的排查:修改上传文件大小限制 在上传时nginx返回了413错误,查看log文件,显示的错误信息是:”413 Request Entity Too Large”, 于是在网上找了下“nginx 413错误”发现需要做以下设置: 在nginx.conf增加 client_max_body_size的相关设置, 这个值默认是1m,可以增加到8m以增加提高文件大小限制; 如果运行的是php,那么还要检查php.ini,这个大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。 post_max_size = 8M upload_max_filesize = 2M 三、Nginx 400错误排查:HTTP头/Cookie过大 今天有人汇报nginx的HTTP400错误,而且这个HTTP400错误并不是每次都会出现的,查了一下发现nginx400错误是由于request header过大,通常是由于cookie中写入了较长的字符串所引起的。 解决方法是不要在cookie里记录过多数据,如果实在需要的话可以考虑调整在nginx.conf中的client_header_buffer_size(默认1k) 若cookie太大,可能还需要调整large_client_header_buffers(默认4k),该参数说明如下: 请求行如果超过buffer,就会报HTTP 414错误(URI Too Long) nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400的HTTP错误(Bad Request)。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。 Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。 解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。 而正确的设置需要考虑服务器自身的性能和访客的数量等多重因素。 以我目前的服务器为例子CPU是奔四1.5G的,内存1GB,CENTOS的系统,访客大概是50人左右同时在线。 但是在线的人大都需要请求PHP-CGI进行大量的信息处理,因此我将nginx.conf设置为: fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; fastcgi_buffer_size 128k; fastcgi_buffers 8 128k;#8 128 fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; 这里最主要的设置是前三条,即 fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; 这里规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。 下面我们来仔细分析一下php-fpm.conf几个重要的参数: php-fpm.conf有两个至关重要的参数,一个是”max_children”,另一个是”request_terminate_timeout” 我的两个设置的值一个是”40″,一个是”900″,但是这个值不是通用的,而是需要自己计算的。 计算的方式如下: 如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。 而”max_children”这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。设置”max_children”也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因此我的”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// nginx中配置php fastcgi组解决莫名其妙的502 Bad Gateway错误 一般nginx搭配php都采用这样的方式: location ~ .php$ { proxy_pass        http://localhost:9000; fastcgi_param   SCRIPT_FILENAME   /data/_hongdou$fastcgi_script_name; include        fastcgi_params; } 这个方式只能连接到一组spawn-fcgi开启的fastcgi,在服务器负载稍高时常常出现502 bad gateway错误。 起先怀疑这是php-cgi的进程开得太少,增加后仍然有反映时常有错,偶然间发现php-cgi会报出这样的错误: zend_mm_heap corrupted 看来是php-cgi在执行某些代码时有问题,以致于该线程中止。 在服务器上可能还会看到php-cgi进程在不断变少,估计是出现错误的php-cgi的进程自动退出了。 php的问题总是不太容易能解决,所以在nginx方面想想办法,nginx的好处是它总是能爆出一些稀奇古怪的做法出来。 在nginx的proxy中,规避莫名其妙错误的办法无非是proxy到一个upstream的服务器组中,然后配置 proxy_next_upstream,让nginx遇到某种错误码时,自动跳到下一个后端上。这样,应用服务器即使不稳定,但是在nginx后面就变成了稳定服务。想到nginx的fastcgi和proxy是一路东西,所以proxy能用的经验,移植到fastcgi也能跑得起来。 照着这个思路,用spawn-fcgi多开同样一组php进程,所不同的仅仅是端口: spawn-fcgi -a 127.0.0.1 -p 9000 -u nobody -f php-cgi -C 100 spawn-fcgi -a 127.0.0.1 -p 9001 -u nobody -f php-cgi -C 100 然后把fastcgi的这段配置改成用upstream的方式: upstream backend { server 127.0.0.1:9000; server 127.0.0.1:9001; } location ~ .php$ { fastcgi_pass        backend; fastcgi_param   SCRIPT_FILENAME   /data/_hongdou$fastcgi_script_name; include        fastcgi_params; } 检查配置结果正确,能跑起来;同时在服务器上netstat -n|grep 9000和grep 9001都有记录,证明连接无误;在前台查阅页面,一切运行正常。 这个配置是最简单的配置,既然能连接上upstream,那么很显然upstream的一些东西都可以拿来用,比如ip_hash、weight、max_fails等。 这样的配置在单机下不知能不能共享session,没有测试,如果有问题,可以加上ip_hash,或者配置php把session存进memcached中。 然后就是fastcgi_next_upstream的配置,nginx wiki中没有介绍到这个配置,查了一下,在nginx的CHANGES中有提到,而且出生年月是和proxy_next_upstream一样的。既然如此,那就照proxy_next_upstream一样配吧。一般按默认的值error timeout就可以工作,因为php出现502错误的异常是返回的500错误,所以我把fastcgi_next_upstream定为: fastcgi_next_upstream error timeout invalid_header http_500; 通过这个配置,就可以基本杜绝任何时常性的500错误,出问题的几率会变小很多,如果客户反映仍然激烈,那么就多增加几组fastcgi进程。

sosyxg 2019-12-02 02:43:07 0 浏览量 回答数 0

回答

Re【原创】配置阿里云服务器CentosRedHat64位服务器 格式化后我们把它挂载到到/web/目录 让它用来专门存放网站相关数据 mount /dev/xvdb1 /web/ 挂载后编辑/etc/fstab使分区在开机时自动挂载到/web/ echo "/dev/xvdb1 /web/ ext3 defaults 0 0" >> /etc/fstab 这里顺便附上卸载分区命令,供挂错的孩纸备用。 umount   挂载点设备如: umount /mnt 现在该正式安装程序了 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------Centos系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 因为Redhat yum在线更新是收费的,我们现在把它改下 下面这些是直接在网上转来的,已经过我测试,放心使用 更新Yum源为163的yum源: 1.导入CentOS-5的GPG证书 rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5 2.让yum使用网易的源: cd /etc/yum.repos.d/ wget http://mirrors.163.com/.help/CentOS-Base-163.repo 3.修改repo文件 在所有mirrorlist前面加上#,把所有$releasever替换成5 sed -i '/mirrorlist/d' CentOS-Base-163.repo sed -i 's/\$releasever/5/' CentOS-Base-163.repo 4.清理并重新生成yum缓存 yum clean metadata yum makecache ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------Centos系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 在安装程序前,我们先把基础环境包安装下,否则安装以下程序的时候会出现很多问题 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------RedHat系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 如果是Centos系统的话,我们还要先改个文件,作用是为了让服务器可以安装或更新kernel开头的软件,因为我们的环境要用到 vim /etc/yum.conf 按I开始编辑(记住噢,教程往下就省略了) 找到 exclude=kernel* 在前面加上#号 修改好后按ESC键  输入以下命令保存(记住噢,教程往下就省略了) :wq ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------RedHat系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开始安装基础环境包 sudo -sLANG=Cyum -y install gcc gcc-c   autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers lsof unzip 等了好久吧 现在准备开始安装程序了,都要安装些什么呢?我把要安装的列出来了,有不需要的大家可以不安装。 libiconv 作用转换编码 libmcrypt 作用加密 mhash 同上 mcrypt  同上 cmake 安装Mysql时需要 bison 同上 libunwind 使用tcmalloc 加速 mysql 和 nginx需要 google-perftools 使用tcmalloc 加速 mysql 和 nginx需要 mysql 不解释 pcre 安装nginx需要 nginx 不解释 php 不解释 memcache 缓存加速 memcached 同上 eaccelerator 同上 libevent 安装 memcached 需要 PDO_MYSQL php可以用pdo操作数据库 不知道安装什么版本?下载包找不到?找不到就不用找到,我已经都帮你们找好了,全是最新的安装包。 往下拉↓↓↓ 找这些安装包可花了我不少时间,版主大人 给加个精安慰下吧 libiconv 1.14 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz libmcrypt 2.5.8 http://sourceforge.net/projects/ ... 5.8.tar.gz/download mhash 0.9.9.9 http://downloads.sourceforge.net ... 740843&big_mirror=0 mcrypt 2.6.8 http://sourceforge.net/projects/ ... wnload?source=files cmake 2.8.10.1 http://www.cmake.org/files/v2.8/cmake-2.8.10.1.tar.gz bison 2.5 http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz libunwind 1.1 http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz google-perftools 2.0 http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz mysql 5.5.28 http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz pcre 8.31 ftp://ftp.csx.cam.ac.uk/pub/soft ... re/pcre-8.31.tar.gz Nginx 最新稳定版:1.3.8 http://nginx.org/download/nginx-1.3.8.tar.gz php 最新稳定版  5.4.8 http://cn2.php.net/get/php-5.4.8.tar.gz/from/tw1.php.net/mirror memcached 最新稳定版2.2.7 http://pecl.php.net/get/memcache memcached 1.4.15 http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz libevent 2.0.20 https://github.com/downloads/lib ... .0.20-stable.tar.gz eaccelerator 42067 https://github.com/eaccelerator/eaccelerator/tarball/master PDO_MYSQL 1.0.2 http://pecl.php.net/get/PDO_MYSQL ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开个楼单独说下 大家执行命令的时候最好 一行一行去复制执行 不要一次全复制去执行,有可能会出错 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装包都下载好了吧?那我们开始安装吧 把所有下载的压缩包 传到/web/backup/soft 目录 关于上传可以用Filezilla 这个软件 新建一个站点  协议选择sftp 账号和密码 输入putty 登陆账号密码就可以了 安装 libiconv cd /web/backup/softtar zxvf libiconv-1.14.tar.gzcd libiconv-1.14./configure --prefix=/usr/localmakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libmcrypt cd /web/backup/softtar zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremakemake install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mhash cd /web/backup/softtar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../ 设置共享资源 ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mcrypt cd /web/backup/softtar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8//sbin/ldconfig./configuremakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 cmake cd /web/backup/softtar zvxf cmake-2.8.10.1.tar.gzcd cmake-2.8.10.1 ./bootstrapmake && make installcd ../ 注:如果安装不成功或图省事可以使用yum -y install cmake来快速安装 ,安装这个需要些时间的。 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libunwind cd /web/backup/softtar zvxf libunwind-1.1.tar.gzcd libunwind-1.1./configure --enable-sharedmake && make installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 google-perftools cd /web/backup/softtar zvxf gperftools-2.0.tar.gzcd gperftools-2.0./configure --enable-shared --enable-frame-pointersmake && make installcd ../ 更新,使动态链接库能够被系统共享 echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf/sbin/ldconfig ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 重点来了 现在开始准备安装Mysql 创建mysql用户组和用户 /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysql 创建mysql数据库所需要的目录 mkdir -p /web/data/mysqlchown -R mysql:mysql /web/data/mysql 安装 Mysql su - rootcd /web/backup/softtar zvxf mysql-5.5.28.tar.gzcd mysql-5.5.28cmake -DCMAKE_INSTALL_PREFIX=/web/soft/mysql -DMYSQL_DATADIR=/web/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=onmake && make install 建立软链接 ln -s /web/soft/mysql/lib/lib* /usr/lib/ 配置Mysql数据库 cd /web/soft/mysql./scripts/mysql_install_db --basedir=/web/soft/mysql/ --datadir=/web/data/mysql/ --user=mysql 复制配置文件 cp ./support-files/my-large.cnf /etc/my.cnf 如提示是否复制 输入y回车 设置mysql开机自动启动服务 cp ./support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig --level 345 mysqld on ------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓会在文件中搜索内容的童鞋可以无视↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓----- 因为教程后面要修改的文件内容挺多,先中断一会,说下打开文件后如果搜索内容 如上面这个操作 vim /etc/rc.d/init.d/mysqld 打开文件后 先不要按I编辑 输入 /basedir 然后回车 这里的意思是 搜索 basedir 如果找到的内容不是 再按N查下一个 如果找到了自己要改的内容再按I编辑就可以了 /查找内容 反斜杠 查找内容 是搜索的意思,童鞋记住了没 再罗嗦一下,在putty粘贴复制好的内容,直接在相应位置鼠标右键就可以了 -------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑会在文件中搜索内容的童鞋可以无视↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑------ 修改服务配置文件 vim /etc/rc.d/init.d/mysqld 找到相应代码修改为(不会修改文件?看3楼加红字。不会查找内容?网 ↑↑↑↑↑↑↑看) basedir=/web/soft/mysqldatadir=/web/data/mysql 数据初始化,及修改root密码 service mysqld startcd /web/soft/mysql/./bin/mysql_secure_installation 运行上面命令后,会先提示你输入mysql密码,因为默认是空直接回车 提示是否设置新密码(set root password),输入y,根据提示输入两边新密码后回车 提示是否删除匿名用户(remove anonymous users),输入y 提示是否禁止远程登录(disallow root login remotely),输入y 提示删除测试数据库(remove test database and access to it),输入y 提示现在重新载入权限表(reload privilege tables now),输入y 软连接mysql ln -s /web/soft/mysql/bin/mysql /bin 设置软连接后 直接在命令行 mysql -u root -p  就可以进入mysql了 使用tcmalloc优化mysql 修改MySQL启动脚本(根据你的MySQL安装位置而定) vim /web/soft/mysql/bin/mysqld_safe 在# executing mysqld_safe的下一行,加上: export LD_PRELOAD=/usr/local/lib/libtcmalloc.so 重启服务,查看tcmalloc是否生效 (第二条命令显示即生效) service mysqld restartlsof -n | grep tcmalloc ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 pcre cd /web/backup/softtar zxvf pcre-8.31.tar.gzcd pcre-8.31/./configuremake && make installcd ../ 设置共享资源( 这里要注意:因为我是64位系统所以位置为cd /lib64 如果是32位系统请把cd /lib64改为 cd /lib) cd /lib64/ln -s libpcre.so.0.0.1 libpcre.so.1 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第二个重点来了 安装 Nginx 创建www用户和组,创建www虚拟主机使用的目录,并且赋予他们适当的权限 groupadd wwwuseradd -g www wwwmkdir -p /web/wwwchmod  w /web/wwwchown -R www:www /web/www 为tcmalloc添加目录,并且赋予适当权限 mkdir -p /tmp/tcmalloc/chown -R www:www /tmp/tcmalloc/ cd /web/backup/softtar zvxf nginx-1.3.8.tar.gzcd nginx-1.3.8 ------------伪装开始------------------ 以下操作是伪装服务器信息的,大家可以不修改(伪装的作用是让其他人看不出你网站用的是nginx) vim ./src/core/nginx.h 复制代码 修改NGINX_VERSION为你希望显示的版号 【这里我改为了1.4.31】 修改NGINX_VER为你希望显示的名称 【这里我改为了lighttpd】 修改NGINX_VAR 为你希望显示的名称 【这里我改为了lighttpd】 ------------伪装结束------------------ 继续安装Nginx ./configure --user=www --group=www --prefix=/web/soft/nginx --with-http_stub_status_module --with-http_ssl_module --with-google_perftools_modulemake && make installcd ../ 修改 nginx.conf ,令nginx可以 google-perftools加速 vim /web/soft/nginx/conf/nginx.conf 修改前面几行为:(也就是http{以上的代码) user www www;worker_processes 4;error_log logs/error.log crit;pid logs/nginx.pid;google_perftools_profiles /tmp/tcmalloc/;events {  use epoll;  worker_connections 65535;} 测试运行Nginx cd /web/soft/nginx./sbin/nginx -t 如果显示下面信息,即表示配置没问题 nginx: the configuration file /web/soft/nginx/conf/nginx.conf syntax is ok nginx: configuration file /web/soft/nginx/conf/nginx.conf test is successful 输入代码运行nginx服务 ./sbin/nginxps au|grep nginx 如果显以类似下面的信息,即表示nginx已经启动 root     27056  0.0  0.1 103232   852 pts/0    S    09:57   0:00 grep nginx 输入代码检测是否支持加速 lsof -n | grep tcmalloc 如果显示类似下面的信息,即表示支持tcmalloc加速 (mysqld和nginx两个线程都支持) mysqld    20707 mysql  mem       REG              202,1  2212983     837411 /usr                                             /local/lib/libtcmalloc.so.4.1.0 nginx     27051   www    9w      REG              202,1        0   33951543 /tmp                                             /tcmalloc/.27051 nginx     27052   www   11w      REG              202,1        0   33951541 /tmp                                             /tcmalloc/.27052 nginx     27053   www   13w      REG              202,1        0   33951542 /tmp                                             /tcmalloc/.27053 nginx     27054   www   15w      REG              202,1        0   33951540 /tmp                                             /tcmalloc/.27054 编写nginx 启动服务 cd /etc/init.dvim nginx 输入以下代码并保存( 复制时要仔细,检查是否复制完成,打开文件后按I进入编辑状态再右键粘贴) #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig:   - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ #               proxy and IMAP/POP3 proxy server # processname: nginx # config:      /etc/nginx/nginx.conf # config:      /etc/sysconfig/nginx # pidfile:     /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/web/soft/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/web/soft/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginx start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    echo -n $"Starting $prog: "    daemon $nginx -c $NGINX_CONF_FILE    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval} stop() {     echo -n $"Stopping $prog: "    killproc $prog -QUIT    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval    killall -9 nginx} restart() {    configtest || return $?    stop     sleep 1     start }reload() {    configtest || return $?    echo -n $"Reloading $prog: "    killproc $nginx -HUP    RETVAL=$?    echo} force_reload() {    restart}configtest() {    $nginx -t -c $NGINX_CONF_FILE}rh_status() {    status $prog}rh_status_q() {    rh_status >/dev/null 2>&1}case "$1" in    start)        rh_status_q && exit 0    $1        ;;    stop)        rh_status_q || exit 0        $1        ;;    restart|configtest)        $1        ;;    reload)        rh_status_q || exit 7        $1        ;;    force-reload)        force_reload        ;;    status)        rh_status        ;;    condrestart|try-restart)        rh_status_q || exit 0        ;;    *)        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"         exit 2 esac 设置权限,并添加到启动服务列表中 chmod 755 /etc/init.d/nginxchkconfig --add nginxchkconfig --level 345 nginx on/web/soft/nginx/sbin/nginx -s stopservice nginx start ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第三个重点 安装 PHP (准备在服务器安装Dedecms的童鞋要注意了,这里的PHP版本比较高,有些旧函数被抛弃了,经我测试,安装最新版的Dedecms5.7时登录后台页面空白,如需安装Dedecms建议安装PHP 5.2.8版本, phpwind discuz 不受影响 ) 安装前先执行以下命令 32位系统执行 ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib/ 64位系统执行 cp -frp /usr/lib64/libldap* /usr/lib/ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib64/ 继续执行 mkdir ext/phar/phar.pharcd /web/backup/softtar zvxf php-5.4.8.tar.gzcd php-5.4.8./configure --prefix=/web/soft/php --with-config-file-path=/web/soft/php/etc --with-mysql=/web/soft/mysql --with-mysqli=/web/soft/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --disable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --disable-fileinfomake ZEND_EXTRA_LIBS='-liconv'make install 复制配置文件 cp php.ini-production /web/soft/php/etc/php.inicd ../ 安装 memcache cd /web/backup/softtar zvxf memcache-2.2.7.tgzcd memcache-2.2.7/web/soft/php/bin/phpizeldconfig./configure --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持memcache vim /web/soft/php/etc/php.ini 在文件中搜索; extension_dir = "./" 在下面增加第一行代码,搜索;extension=php_shmop.dll在下面增加第二行代码 ( 照顾一下粗心的童鞋,再说一次搜索的方法是VIM进入文件后输入/然后输入要查找的内容回车) extension_dir = "/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/"extension = "memcache.so" 安装 eaccelerator扩展 cd /web/backup/softtar zvxf eaccelerator-eaccelerator-42067ac.tar.gzcd eaccelerator-eaccelerator-42067ac/web/soft/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持eaccelerator vim /web/soft/php/etc/php.ini 在文件尾部增加以下代码( Shift G快速移动到文档尾部) [eaccelerator] zend_extension="/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"eaccelerator.shm_size="32"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.log_file = "/web/soft/php/var/log/eaccelerator_log"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9" 增加eaccelerator目录 mkdir -p /tmp/eaccelerator ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libevent cd /web/backup/softtar zvxf libevent-2.0.20-stable.tar.gzcd libevent-2.0.20-stable./configuremakemake installcd ../ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 memcached cd /web/backup/softtar zvxf memcached-1.4.15.tar.gzcd memcached-1.4.15./configuremakemake installcd ../ 启动 memcached /usr/local/bin/memcached -d -m 100  -p 11211 -u root 内存小童鞋要注意了:这会以守护程序的形式启动 memcached(-d),为其分配 100m 内存(-m 100),并指定监听 localhost,即端口 11211 让 memcached 自动启动 vim /etc/rc.d/rc.local 在页尾加入以下代码 以www用户启动 /usr/local/bin/memcached -d -m 100  -p 11211 -u www 附上常用命令 -d 选项是启动一个守护进程, -m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB -u 是运行Memcache的用户,这里是root -l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122 -p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口 -c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定 -P 是设置保存Memcache的pid文件 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 PDO_MYSQL ln -s /web/soft/mysql/include/* /usr/local/include/cd /web/backup/softtar zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2//web/soft/php/bin/phpize./configure --with-php-config=/web/soft/php/bin/php-config --with-pdo-mysql=/web/soft/mysqlmakemake installcd ../ 修改php配置文件,使其支持pdo vim /web/soft/php/etc/php.ini 在文件中搜索extension = "memcache.so"(刚才添加的代码) ,在下面增加 extension="pdo_mysql.so" 运行 /web/soft/php/bin/php -m 查看是否含有pdo_mysql 含有则成功 安装 php-fpm cp /web/soft/php/etc/php-fpm.conf.default /web/soft/php/etc/php-fpm.confvim /web/soft/php/etc/php-fpm.conf 修改以下地方   注意:以下代码每行所在的位置均不同,如果找到的代码前面有;要去除,后面的数字不一样也要修改,这个要注意 如何边编辑边查找? 找到对应行编辑后按下ESC再输入 /查找内容 查找就行了 [global]pid = run/php-fpm.pid-perror_log = log/php-fpm.logemergency_restart_threshold = 10emergency_restart_interval = 1mprocess_control_timeout = 5spm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 20pm.max_children = 20 修改nginx,使其支持php vim /web/soft/nginx/conf/nginx.conf 找到并修改以下代码把前面#号去除 location ~ \.php$ {    root           html;    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    include        fastcgi_params;} 将php-fpm 作为服务运行 cp /web/backup/soft/php-5.4.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchmod 700 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig --level 345 php-fpm on 服务方式启动php-fpm service php-fpm restart 现在我们来重启下服务器 reboot 重启成功后运行ps aux查看正在运行的进程 是否有nginx php-pfm mysql 有的话就说明成功了 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 装好了服务器,有些童鞋可能要迫不及待想架设网站了今天太累了,明天继续更新怎么在服务器架设网站 (将以phpmyadmin、phpwind8.7、phpwind9.0、discuz2.5安装举例) ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 架设网站前先创建两个文件夹 config  用来存放nginx网站配置文件 logs  用来存放日志 mkdir /web/data/configmkdir /web/data/logs 再把 nginx 配置下 vim /web/soft/nginx/conf/nginx.conf 在文件尾部} 上面增加 include /web/data/config/*.conf; 此作用是设置nginx网站配置文件路径,以后新增网站就不要来编辑nginx.conf文件了,网站多时也方便管理 平滑重启nginx(以后每增加或修改nginx配置文件时都要重启) service nginx reload ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 phpMyadmin 先把用来访问phpMyadmin的域名解析到服务器 下载个最新的 3.5.3版本 下载地址 http://sourceforge.net/projects/ ... 1f2263b6722fa88ca82 备用地址 http://jaist.dl.sourceforge.net/ ... ll-languages.tar.gz 下载后把它传到/web/backup/code 此文件夹是用来放源码的 cd /web/backup/codetar zxvf phpMyAdmin-3.5.3-all-languages.tar.gz -C /web/www/ cd /web/wwwmv phpMyAdmin-3.5.3-all-languages/ phpmyadmin创建nginx配置文件 vim /web/data/config/phpmyadmin.conf输入以下内容( 代码里的www.phpmyadmin.com 改为自己要绑定的网址) server {    listen 80;    client_max_body_size 10M;    server_name www.phpmyadmin.com;    index index.php index.html index.htm;    root /web/www/phpmyadmin;    autoindex off;    location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {        fastcgi_pass   127.0.0.1:9000;        include fastcgi.conf;    }        location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf|js|css)$        {               expires 5d;          access_log off;        }    access_log  /web/data/logs/phpmyadmin.log;} 重启下Nginx service nginx reload 访问看看是否成功了

svaaa 2019-12-02 00:26:00 0 浏览量 回答数 0

问题

DRDS 实例中的连接怎么实现?

猫饭先生 2019-12-01 21:20:56 1087 浏览量 回答数 0

回答

Re吐槽一下阿里云的slb 引用第2楼vpsmm于2013-04-27 12:01发表的  : 这个东西到底能不能支持商业运营? 未知,我配置过最大的SLB支持环境,日IP30W,PV150W。DZ的动漫论坛,总带宽在20M(论坛)附件另放到OSS了。 这个东西到底能不能在大访问量下稳定运行? 同上,我实际用到的最大访问量了。 这个东西到底能不能真正实现均衡的负载? ....... 知道你是阿里云的铁杆粉丝。但说话要客观! 麻烦你给出你所谓配置过(并且能正常运行访问)的网站地址、拓扑图以及资源使用情况! 实际应用是在服务器繁忙的情况下,aliyun的slb不能很好地完成转发,其中原因有可能是cpu、io等多方面造成的。并且经常出现很多莫名其妙的故障,博客园实际上就是一个典型的例子! 博客园在使用过程中得到很多工程师的帮助,这个你看到了?为很么别人不能得到很多工程师的帮助?这对其他用户公平吗? ------------------------- Re吐槽一下阿里云的slb 引用第4楼billlee于2013-04-27 12:18发表的  : 首先,需要告诉楼主的是:无论SLB是否是一个已经正式商用的产品,我们对外所能提供的服务质量与已经正式商用的其他产品都是没有区别的。并不会存在非正式商用的产品存在稳定性差或服务标准低的说法。 其次,关于SLB的性能和所能达到的对外服务能力,这个除了SLB系统本身所能支持的范畴有关外,也与SLB后端的ECS云服务器本身性能有着密切的关系。但是,可以确保的是SLB系统本身是以集群的方式工作的,当我们系统还没有达到服务瓶颈的时候我们就会做横向的扩容从而确保系统本身的稳定性和可用性。所以,建议楼主在实际使用前可以根据自己的实际应用场景测试一下相关的服务,从而做到心里有数。 关于问题中涉及到的一些细节,比如SLB的转发、SLB的健康检查回报等问题,我看到@vpsmm已经做了较为详细的解答,也请楼主了解,同时感谢@vpsmm的热心回答。 ....... 非常感谢你的回复。 但我也注意到第二段文字。其中“这个除了SLB系统本身所能支持的范畴有关外,也与SLB后端的ECS云服务器本身性能有着密切的关系。” 实践证明,使用阿里云单机,cup占用较高的时候可能问题不大,但在slb里,ecs单机cpu占用一旦超过60-70%就很容易出问题,具体表现也不太一致。博客园的现象即是如此,我所知道的其他几个中型网站也是如此,只不过人家没说而已。 希望你们认真测试一下。 ------------------------- Re回5楼billz的帖子 引用第7楼vpsmm于2013-04-27 12:31发表的 回 5楼(billz) 的帖子 : 这是我帮朋友做的,网址就不公布了。只是一个十分简单的DZ论坛,没有太过详细的拓扑图。 目前附件是OSS上面,这个就没什么多说的。DZ比较简单,只要涉及PHP程序和MYSQL就行了。 单独一台4核CPU,8G内存,拿来跑MYSQL。 一台标准A,拿来跑uc。 ....... 四台标准B,拿来跑php程序,(全部在SLB里)。 用这个跑日IP30W,PV150W?你这真有点忽悠! 你要说别的行业我可能还不是很清楚,国内动漫论坛.....哈哈,你算忽悠错了。 ------------------------- Re回6楼billz的帖子 引用第11楼billlee于2013-04-27 13:14发表的 回 6楼(billz) 的帖子 : 如果SLB系统真的像楼主描述的那样存在当后端云服务器出现CPU利用率达到60-70%就会出现SLB访问不稳定的情况,那么我的建议是楼主可以通过工单提供一下你的VIP信息,我们的工作人员会帮助你针对这个情况进行核实和问题定位的。 相信已经有人和你们反映过类似的情况了。 由于这个问题指向并不是非常明确,故障现象也不很统一,所以发工单也未必能解决什么问题。你们自己多做做测试就能发现问题。 更何况发给你们的工单一般都是先由小客服们做第一手处理,这种问题他还没搞明白咋回事随手就被他给被关闭了。解决不了问题还惹一肚子气,没啥用处的。 ------------------------- Re回12楼billz的帖子 引用第13楼billlee于2013-04-27 13:32发表的 回 12楼(billz) 的帖子 : 那楼主是否方便把发生在你身上和你对外提供服务身上的问题直接提交给我,我们首先针对这个问题进行分析呢?这样至少可以先解决楼主自身的疑惑和困扰,从而确保楼主对外的服务问题得到妥善的解决。 另,关于客服工单服务质量的问题,我们内部已经在进一步加强对客服人员的培训和处理流程的优化,相信通过我们的努力一定会提升服务质量和专业度,从而保证所有用户通过工单提交的问题都能得到明确的定位、准确的解答和妥善的解决。 还是先不说了。我们已经被迫将cpu的占用都降到50%以下。 你们还是先好好搞一下你们的产品和服务吧。 看看今天的微博,你们已经被喷的很惨了,这样下去要完蛋的。只听那些小站长们拍马屁是没有用的。 http://weibo.com/1670517015/zu41ne2pY#_rnd1367043576717 ------------------------- Re回14楼billz的帖子 引用第17楼billlee于2013-04-27 15:28发表的 回 14楼(billz) 的帖子 : 既然不稳定的问题已经出现在了你的对外应用服务中,我的建议还是希望你能够配合我们一起把问题查一下,这样对于我们自身系统的成长和你本身对外服务的稳定性来说都是有益的。如果通过定位分析,问题真的是由SLB系统造成的,那么我们肯定会尽快给予解决和修复。因为很多问题在没有复现和最终定位的情况下只是通过简单的通用性测试是没有办法涵盖所有case和应用场景的(随着客户的逐渐增加,客户本身的应用场景越来越复杂和个性化,我们也需要大家的帮助来不断的完善我们的平台和服务),所以还是希望你能够协助我们一并解决问题,而不是采取变相的手段来掩盖问题本身。 阿里云的成长需要大家一起的努力来达成,感谢你及其他用户的支持! 你作为官方人士,在于用户交流的时候应该注意言辞。 作为用户,我没有必要替你们“掩盖”问题,我们只是以最简洁、高效的方式去处理问题。这里的用户提出过很多很多有益的建议,你们都能够迅速的处理解决吗?明显是不能的。所以,不如我们自己先改变一下部署,以便能够正常运营。 问题本身的解决还是依靠你们自己吧。看看几天微博的吐槽,人家说的一些问题都是事实吧,其中有些我们也经历过。论坛里大部分都是开小网站的,他们也许不会很在意停机几分钟甚至几小时,但这对一个中型网站,每一分钟的停顿都会造成直接的经济损失的网站来说意味着什么你们应该不难能理解吧? cpu、io性能问题、用户间相互印象的问题等等等等,拜托你们多下点功夫吧。 ------------------------- Re吐槽一下阿里云的slb 引用第32楼twl007于2013-04-28 00:16发表的  : 这帖子都喷成这样了 - - 我自己的使用经验来看 SLB的稳定性是跟RDS有的一拼的 用了一年多的SLB真正因为SLB自身原因引起的故障寥寥无几 大部分情况是服务器超载了SLB返回503 印象中没有因为SLB自身故障导致网站挂掉的 个人觉得SLB更侧重于提升网站的可用性 提升负载能力倒是次要了 当你网站需要多台服务器进行热备的时候SLB的重要性不言而喻 至于多台机器提升性能 我自己是用来看很少从性能方面考虑SLB 如果你真的需要两台一起工作才能承载整个网站访问 那么一台down掉 另一台也会因为承受不住压力down掉 这种情况下部署SLB是无意义的 只有在确定单台能满足要求然后横向扩展时才能发挥SLB提高网站可用性的作用 ....... 作为一个版主对slb的理解居然如此片面 ------------------------- Re回33楼alilab的帖子 引用第38楼twl007于2013-04-28 10:10发表的 回 33楼(alilab) 的帖子 : 难道是人品问题么 - - 我们从一年多前开始用阿里云就在使用SLB了 那时候功能还没现在的完善 但是我用到现在也只遇到过一次因为SLB故障我无法创建修改服务器集群 并没有出现过无法访问的问题…… 用了这么久SLB跟RDS是出问题最少的…… 每次工单问我们都有记录 真正问题原因是SLB引起的真心一次没有…… 而且SLB曾经多次在我们一台挂掉服务器状态的情况下成功把所有访问转移到另一台服务器 保证了网站没中断 ....... 先说说你的系统架构和流量数据。别吹牛b就行。 小站应该是没啥问题的。

billz 2019-12-02 01:08:30 0 浏览量 回答数 0

回答

我想到的一个简单可能性是,在常见情况下,每个值保留一个压缩数组,每个值2位,而每个值分隔一个4字节(原始元素索引为24位,实际值为8位,因此(idx << 8) | value))其他的。 查找值时,首先要在2bpp数组(O(1))中进行查找。如果找到0、1或2,则为您想要的值;如果找到3,则意味着您必须在辅助阵列中查找它。在这里,您将执行二进制搜索以查找感兴趣的索引左移8(O(log(n)的n较小,因为它应该是1%),然后从4-中提取值字节的东西。 std::vector<uint8_t> main_arr; std::vector<uint32_t> sec_arr; uint8_t lookup(unsigned idx) { // extract the 2 bits of our interest from the main array uint8_t v = (main_arr[idx>>2]>>(2*(idx&3)))&3; // usual (likely) case: value between 0 and 2 if(v != 3) return v; // bad case: lookup the index<<8 in the secondary array // lower_bound finds the first >=, so we don't need to mask out the value auto ptr = std::lower_bound(sec_arr.begin(), sec_arr.end(), idx<<8); #ifdef _DEBUG // some coherency checks if(ptr == sec_arr.end()) std::abort(); if((*ptr >> 8) != idx) std::abort(); #endif // extract our 8-bit value from the 32 bit (index, value) thingie return (*ptr) & 0xff; } void populate(uint8_t *source, size_t size) { main_arr.clear(); sec_arr.clear(); // size the main storage (round up) main_arr.resize((size+3)/4); for(size_t idx = 0; idx < size; ++idx) { uint8_t in = source[idx]; uint8_t &target = main_arr[idx>>2]; // if the input doesn't fit, cap to 3 and put in secondary storage if(in >= 3) { // top 24 bits: index; low 8 bit: value sec_arr.push_back((idx << 8) | in); in = 3; } // store in the target according to the position target |= in << ((idx & 3)2); } } 对于您建议的数组,第一个数组应为10000000/4 = 2500000字节,第二个数组应为10000000 * 1% 4 B = 400000字节;因此,有2900000个字节,即少于原始数组的三分之一,并且最常使用的部分全部保存在内存中,这对于缓存来说应该是不错的选择(它甚至可以容纳L3)。 如果您需要超过24位寻址,则必须调整“辅助存储”。扩展它的一种简单方法是使用256个元素的指针数组来切换索引的前8位,然后转发到如上所述的24位索引排序数组。 快速基准 #include #include #include <stdint.h> #include #include <stdio.h> #include <math.h> using namespace std::chrono; /// XorShift32 generator; extremely fast, 2^32-1 period, way better quality /// than LCG but fail some test suites struct XorShift32 { /// This stuff allows to use this class wherever a library function /// requires a UniformRandomBitGenerator (e.g. std::shuffle) typedef uint32_t result_type; static uint32_t min() { return 1; } static uint32_t max() { return uint32_t(-1); } /// PRNG state uint32_t y; /// Initializes with seed XorShift32(uint32_t seed = 0) : y(seed) { if(y == 0) y = 2463534242UL; } /// Returns a value in the range [1, 1<<32) uint32_t operator()() { y ^= (y<<13); y ^= (y>>17); y ^= (y<<15); return y; } /// Returns a value in the range [0, limit); this conforms to the RandomFunc /// requirements for std::random_shuffle uint32_t operator()(uint32_t limit) { return (*this)()%limit; } }; struct mean_variance { double rmean = 0.; double rvariance = 0.; int count = 0; void operator()(double x) { ++count; double ormean = rmean; rmean += (x-rmean)/count; rvariance += (x-ormean)*(x-rmean); } double mean() const { return rmean; } double variance() const { return rvariance/(count-1); } double stddev() const { return std::sqrt(variance()); } }; std::vector<uint8_t> main_arr; std::vector<uint32_t> sec_arr; uint8_t lookup(unsigned idx) { // extract the 2 bits of our interest from the main array uint8_t v = (main_arr[idx>>2]>>(2*(idx&3)))&3; // usual (likely) case: value between 0 and 2 if(v != 3) return v; // bad case: lookup the index<<8 in the secondary array // lower_bound finds the first >=, so we don't need to mask out the value auto ptr = std::lower_bound(sec_arr.begin(), sec_arr.end(), idx<<8); #ifdef _DEBUG // some coherency checks if(ptr == sec_arr.end()) std::abort(); if((*ptr >> 8) != idx) std::abort(); #endif // extract our 8-bit value from the 32 bit (index, value) thingie return (*ptr) & 0xff; } void populate(uint8_t *source, size_t size) { main_arr.clear(); sec_arr.clear(); // size the main storage (round up) main_arr.resize((size+3)/4); for(size_t idx = 0; idx < size; ++idx) { uint8_t in = source[idx]; uint8_t &target = main_arr[idx>>2]; // if the input doesn't fit, cap to 3 and put in secondary storage if(in >= 3) { // top 24 bits: index; low 8 bit: value sec_arr.push_back((idx << 8) | in); in = 3; } // store in the target according to the position target |= in << ((idx & 3)*2); } } volatile unsigned out; int main() { XorShift32 xs; std::vector<uint8_t> vec; int size = 10000000; for(int i = 0; i<size; ++i) { uint32_t v = xs(); if(v < 1825361101) v = 0; // 42.5% else if(v < 4080218931) v = 1; // 95.0% else if(v < 4252017623) v = 2; // 99.0% else { while((v & 0xff) < 3) v = xs(); } vec.push_back(v); } populate(vec.data(), vec.size()); mean_variance lk_t, arr_t; for(int i = 0; i<50; ++i) { { unsigned o = 0; auto beg = high_resolution_clock::now(); for(int i = 0; i < size; ++i) { o += lookup(xs() % size); } out += o; int dur = (high_resolution_clock::now()-beg)/microseconds(1); fprintf(stderr, "lookup: %10d µs\n", dur); lk_t(dur); } { unsigned o = 0; auto beg = high_resolution_clock::now(); for(int i = 0; i < size; ++i) { o += vec[xs() % size]; } out += o; int dur = (high_resolution_clock::now()-beg)/microseconds(1); fprintf(stderr, "array: %10d µs\n", dur); arr_t(dur); } } fprintf(stderr, " lookup | ± | array | ± | speedup\n"); printf("%7.0f | %4.0f | %7.0f | %4.0f | %0.2f\n", lk_t.mean(), lk_t.stddev(), arr_t.mean(), arr_t.stddev(), arr_t.mean()/lk_t.mean()); return 0; } (代码和数据始终在我的Bitbucket中更新) 上面的代码使用在其帖子中指定的OP分配的随机数据填充10M元素数组,初始化我的数据结构,然后: 使用我的数据结构执行10M元素的随机查找 通过原始数组执行相同操作。 (请注意,在顺序查找的情况下,数组总是在很大程度上赢得胜利,因为它是您可以进行的最便于缓存的查找) 最后两个块重复50次并定时;最后,计算并打印每种类型的查询的平均值和标准差,并显示提速率(lookup_mean / array_mean)。 我-O3 -static在Ubuntu 16.04 上使用g ++ 5.4.0(以及一些警告)编译了上面的代码,并在某些计算机上运行了该代码;其中大多数运行Ubuntu 16.04,一些较旧的Linux,一些较新的Linux。在这种情况下,我认为操作系统根本不重要。 CPU | cache | lookup (µs) | array (µs) | speedup (x) Xeon E5-1650 v3 @ 3.50GHz | 15360 KB | 60011 ± 3667 | 29313 ± 2137 | 0.49 Xeon E5-2697 v3 @ 2.60GHz | 35840 KB | 66571 ± 7477 | 33197 ± 3619 | 0.50 Celeron G1610T @ 2.30GHz | 2048 KB | 172090 ± 629 | 162328 ± 326 | 0.94 Core i3-3220T @ 2.80GHz | 3072 KB | 111025 ± 5507 | 114415 ± 2528 | 1.03 Core i5-7200U @ 2.50GHz | 3072 KB | 92447 ± 1494 | 95249 ± 1134 | 1.03 Xeon X3430 @ 2.40GHz | 8192 KB | 111303 ± 936 | 127647 ± 1503 | 1.15 Core i7 920 @ 2.67GHz | 8192 KB | 123161 ± 35113 | 156068 ± 45355 | 1.27 Xeon X5650 @ 2.67GHz | 12288 KB | 106015 ± 5364 | 140335 ± 6739 | 1.32 Core i7 870 @ 2.93GHz | 8192 KB | 77986 ± 429 | 106040 ± 1043 | 1.36 Core i7-6700 @ 3.40GHz | 8192 KB | 47854 ± 573 | 66893 ± 1367 | 1.40 Core i3-4150 @ 3.50GHz | 3072 KB | 76162 ± 983 | 113265 ± 239 | 1.49 Xeon X5650 @ 2.67GHz | 12288 KB | 101384 ± 796 | 152720 ± 2440 | 1.51 Core i7-3770T @ 2.50GHz | 8192 KB | 69551 ± 1961 | 128929 ± 2631 | 1.85 结果好坏参半! 通常,在大多数这些机器上都有某种程度的加速,或者至少它们是同等的。 在阵列真正胜过“智能结构”查找的两种情况下,它们是在具有大量缓存但并不特别忙的机器上:上面的Xeon E5-1650(15 MB缓存)是一台夜间构建机器,目前相当闲置;Xeon E5-2697(35 MB高速缓存)是一台用于高性能计算的计算机,它也处于空闲状态。确实有道理,原始数组完全适合其巨大的缓存,因此紧凑的数据结构只会增加复杂性。 在“性能范围”的另一面-但是阵列又稍微快一点,有不起眼的Celeron为我的NAS提供动力。它的缓存非常少,以至于数组和“智能结构”都无法放入其中。缓存足够小的其他计算机也具有类似的性能。 Xeon X5650必须格外小心-它们是非常繁忙的双路虚拟机服务器上的虚拟机;可能是,尽管名义上它具有相当数量的缓存,但是在测试期间,它多次被完全不相关的虚拟机抢占了先机。

保持可爱mmm 2020-02-07 01:13:22 0 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 39926 浏览量 回答数 17

问题

【精品问答】python技术1000问(1)

问问小秘 2019-12-01 21:57:48 456417 浏览量 回答数 22

回答

iperf,具体要纤细直接去看文档, 简单给你列条测试:(TCP和UDP知只是两种传输数据的协议) 1)TCP测试    服务器执行:./iperf -s -i 1 -w 1M '这裏是指定windows如果是 iperf -s则windwos默认大小为8kbyte/s    客户端执行:./iperf -c host -i 1 -w 1M   其中-w表示TCP window size,host需替换成服务器地址。    2)UDP测试    服务器执行:./iperf -u -s    客户端执行:./iperf -u -c 10.255.255.251 -b 900M -i 1 -w 1M -t 60   其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。 不给分不给力 连接速度是个很怪的概念。我们通常用连接带宽和网络延迟来表达网络连接的状态。 带宽可以用一端建立FTP服务器,另一端下载来测试。网络延时可以用PING命令来测试。 希望能帮到你。 行的。 家庭或小型办公室,如果有两台或更多的计算机,很自然地希望将他们组成一个网络。为方便叙述,以下约定将其称为局域网。在家庭环境下,可用这个网络来共享资源、玩那些需要多人参与的游戏、共用一个调制解调器享用Internet连接等等。办公室中,利用这样的网络,主要解决共享外设如打印机等,此外,办公室局域网也是多人协作工作的基础设施。 别看这样小的网络工程,在过去也是需要专业人员来进行组网配置的。那时,大部分操作的都是手工的,一般的用户都不具备相应的知识和经验。正好属于"高不成低不就"的情况,自然限制了它的发展。Windows XP的出现,打破了这种局面,这依赖它内建有强大的网络支持功能和方便的向导。用户完成物理连接后,运行连接向导,可以自己探测出网络硬件、安装相应的驱动程序或协议,并指导用户,完成所有的配置步骤。 本文介绍两种在Windows XP操作系统下的组网方案,并介绍Windows XP用于局域网中的各种很有特色的功能。 一. 目标: 组成家庭局域网:对外,可以连接Internet,允许局域网内的各个计算机共享连接。对内,可以共享网络资源和设备。 二. 采用什么网络形式? 家庭网中的计算机可能有桌面机或便携机,例如掌上电脑或笔记本机等,也可能出现各种传输介质的接口,所以网络形式上,不宜都采用有线网络,无线接口是必须考虑的。但如果可以明确定位在纯粹的有线网上,也可不设无线接口。所以,这里提供两种方案: 1. 有线与无线混合。 2. 有线。 三. 网络硬件选择 网络适配器(网卡)可采用PCI、PC或PCMCIA接口的卡(后两者多用在便携式机或笔记本机上),Windows XP也支持用USB接口的网络适配器。究竟采用那种适配器,取决于接入网络中的计算机。无论那种适配器,都需要注意与现有计算机的接口以及HUB的协调一致,USB接口的适配器可能适应性更强一些,但对于较旧的计算机,又需要注意它是否支持USB接口。 网络连接线,常用的有同轴电缆和双绞线,这都是大家熟悉的东西,不多解释。究竟采用哪一种,就看你怎么想了。 四. 可采用的网络结构和介质 以太结构:这种结构在办公室或商业用户中最为流行,熟悉的人也很多,技术资料和维护人员也容易找到,所以不多赘述。 电话线连接:这种形式主要的特色是成本很低,物理连接也很简单,适用于大部分的家庭用户。 无线电波:利用电磁波信号来传输信号,可以不用任何连线来进行通讯,并可以在移动中使用。但需要在每台计算机上加装无线适配器,成本高是肯定了。在我国,无线形式用在计算机网络通讯的还较少。在美国,用于无线网络的是一个称为IEEE 802.11b的标准协议,用于计算机近距离网络通讯。在该协议支持下,可达到的网速是11 Mbps。 五. 方案之一 这是一个有线、无线混合方案,具体结构可以参看图1。这个例子中,用4台计算机组成了一个混合网络,PC1是主机,它与外部连接有3个通路: 1. 与Internet接连的调制解调器:用于整个网络的各个计算机共享上网之用。 2. 无线适配器:用于和本网络内的无线设备之间的通讯。 3. HUB:用于"带动"本网络内的下游计算机。 该方案中的PC1、PC2机,必须用Windows XP操作系统,有线部分采用的是以太网结构连接。图中的HPNA是home phoneline network adaptor的缩写,表示家庭电话线网络适配器。图中的PC3和移动计算机,并不要求非使用Windows XP操作系统不可,别的windows版本也行。移动计算机和主机之间的网络连接利用的是无线形式。 如果希望建立混合网络,这种方案已经具备典型的功能,并且不需要花费很大就可以扩充网络规模。 关于连通操作: 图1显示的结构只能表示物理连接关系,物理连接完成后,还需要进行连通操作,网络才可真正投入使用。连通操作包括局域网内部各个计算机之间的连通,和局域网与Internet之间的连通。前者连通建立的步骤如下: 1. 鼠标点击 开始,进入控制面板,点击"Network and Internet Connections网络和Internet连接",选择网络连接( Network Connections),进行下一步。 2. 选择进行"两个或多个LAN的连接" 3. 右键点击一个连接. 4. 确定完成连接任务. 局域网之内的连通操作就完成了。 再说局域网与Internet之间的连通,这种情况主要考虑速度与成本两方面的兼顾。多机上网,最省事的办法是每个机器占据一条独立的电话线,但这不是一般用户能承受起的,资源的浪费也太大。另一个办法,可以使用住宅网关,但这样成本需要增加,不是最佳途径。比较好的方法是使用一个计算机作为主机服务器。这不仅技术上可行,还有很多别的优点,如: ①:由于Windows XP有内建的防火墙,主机介于Internet和终端机之间,可以利用主机的防火墙保护局域网中的分机免受来自Internet的攻击。 ②:主机是"隐匿在" Internet和局域网之间的,充当了网关的脚色,在分机上,用户感觉好像自己是直接连在Interne上一样,察觉不到中间还有主机存在。特别是可以使局域网中的每台计算机同时上网。大大减少了设备投资。 ③:除主机必须使用Windows XP操作系统之外,局域网内的计算机可使用早期的windows版本。 ④:如果局域网中需要使用不同的媒体(例如有线和无线混合),可以利用Windows XP作为过渡的网桥。 ⑤:虽然有网络资源和设备的共享功能,但也可以限制别人对私有文件和数据的访问,特别是将文件存放在主机上的时候,更具有这种优势可用。 ⑥:利用"万能即插即用"功能,可以随时扩充局域网的规模。 六. 方案之二 下面是这种方案的结构示意图。该方案适用于小型办公室。与上一个方案比较,主要是去掉了无线部分,主机与分机之间不采用电话线连接,而是采用了电缆或双绞线连接。所有分机都通过一个HUB与主机连接到Internet上,并可以支持打印机共享。这其实就是最常见的那种局域网的结构。 该方案完成物理连接之后,还需要进行下列操作: 1. 打开网络连接文件夹或找到网络连接的图标. 2. 右键点击"connection to the Internet you want to share(共享Internet连接)"然后再右键点击"Properties(属性)" 3. 选择"Advanced(高级)"任务条。 4. 选择"Allow other networkusers to connect through this computer′s Internet connection(允许另外用户通过这个计算机连接到Internet)"检查框,并选定。 5. 点击 OK.结束操作。 启用Windows XP的防火墙,必须进行设置,不设置是不起作用的。设置过程: 1.打开网络连接文件夹或找到网络连接的图标. 2.右键点击"connection to the Internet you want to share(共享Internet连接)"然后再右键点击"Properties(属性)" 3.选择"Advanced(高级)"任务条。 4. 选择"Protect my computer and network by limitingor preventing access to this computer from the Internet(利用这个计算机限制从Internet进入的访问并保护我的计算机和网络" ,在其下面有一个Internet连接防火墙的检查框,鼠标点击选定。 5. 点击 OK.结束操作。 七. 几点说明 A.主机必须采用Windows XP操作系统,局域网内的计算机可以使用早一些的windows版本,如:windows98、windows ME、windows2000等等。 B.这里提供的是典型的情况,想扩充网络规模基本上可以照此叠加。 C.本文是依据英文测试版本进行的试验,不能保证将来的正式版本。特别是中文正式版本的性能与此完全一致。 参考资料: 创建局域网及配置管理 一.概念: (一).局域网的概念: 局域网做为网络的组成部分,发挥了不可忽视的作用。我们可以用Windows 9X把众多的计算机联系在一起,组成一个局域网,在这个局域网中,我们可以在它们之间共享程序、文档等各种资源,而不必再来回传递软盘;还可以通过网络使多台计算机共享同一硬件,如打印机、调制解调器等;同时我们也可以通过网络使用计算机发送和接收传真,方便快捷而且经济。 局域网是一个范围可大可小、简单的只有2台运行着Windows95的计算机连网(以工作组方式工作),也可以是幅员辽阔的高速ATM网和以太网混合使用、运行多种平台的大型企业。 (二).网络的类型: 1、按网络的地理位置分类 a.局域网(LAN):一般限定在较小的区域内,小于10km的范围,通常采用有线的方式连接起来 b.城域网(MAN):规模局限在一座城市的范围内,10~100km的区域。 c.广域网(WAN):网络跨越国界、洲界,甚至全球范围。 目前局域网和广域网是网络的热点。局域网是组成其他两种类型网络的基础,城域网一般都加入了广域网。广域网的典型代表是Internet网。 (二).硬件指南:网络硬件设备 组成小型局域网的主要硬件设备有网卡、集线器等网络传输介质和中继器、网桥、路由器、网关等网络互连设备。以下主要介绍网卡、集线器等网络传输介质和中继器、网桥、路由器、网关等局域网互连设备。 1.网卡 网卡(Network Interface Card,NIC)也叫网络适配器,是连接计算机与网络的硬件设备。网卡插在计算机或服务器扩展槽中,通过网络线(如双绞线、同轴电缆或光纤)与网络交换数据、共享资源。 Realtek 10/100M,这是我们实例中所使用的网卡 二.组网: 返回顶部 (一).硬件配置:服务器:普通PC机,主板:intel 815,硬盘:迈拓40G,CPU:PIII933,内存:512M ,显示器:ACER。 其他:双绞线一箱(300m),16口HUB一个,RJ45头32个,网卡:Realtek 10/100M 16块。。 由于服务器需要安装两块网卡来用SyGate维护管理,两个网卡的设置请参阅如下的动画。 三.网络维护: 返回顶部 SyGate 4.0是一种支持多用户访问因特网的软件,并且是只通过一台计算机,共享因特网帐号,达到上网的目的。使用SyGate 4.0,若干个用户能同时通过一个小型网络(包括您的笔记本电脑),迅速、快捷、经济地访问因特网。SyGate 4.0能在目前诸多流行的操作系统上运行,譬如:Windows95、Windows98、Windows NT, Windows2000等操作系统;同时,SyGate 4.0还支持多数的因特网连接方式,这包括:调制解调器(模拟线路)拨入、ISDN(综合业务数字网)、线缆调制解调器(Cable Modem)、ADSL以及DirectPC等方式。 SyGate 4.0具有以下优势: 易于安装 SyGate在数分钟之内便可以安装完成,并且通常不需要其他外加的设置。和其他代理服务器软件(proxy server)不同的是,SyGate仅安装Server便可以了。 易于使用 SyGate拥有直观的图形化界面,懂得操作Windows的人员均会操作。SyGate启动后便在后台运行,不需要人工的干预。当SyGate检测到局域网内有上网 要求时,它能自动地连接到因特网上,免去了每次需要手工拨号的烦恼。用户可以不间断地、透明地浏览因特网、收发电子邮件、聊天、使用FTP以及操作其他的小程序等等。局域网内非Windows用户,如Macintosh、Solaris和Linux,均能通过TCP/IP协议上网。 四.Windows 对等网创建与维护 返回顶部 (一).建网软件要求 在一个局域网中,Windows 95、98、NT和2000等操作系统可以并存。当然,即使你的电脑是在DOS下面跑的,也可以实现联网。由于Windows操作系统才是广泛应用的系统,本文不准备讨论DOS联网。 建网硬件要求 要组建电脑网络,无疑需要能将电脑连在一起的硬件设备。最简单的办法是,使用特制的电缆,将两台电脑的并口或者串口联接起来,通过Windows的“直接电缆连接”实现联网。这种联接电缆可以自制,也可以到电脑城购买。其缺点是,只能联接两台电脑,联网距离较短、方式古板,实际应用很不方便,通常要求将一台电脑用作服务器,另外一台用作客户端来实现联网。 但更为普遍采用的是网卡加网线的联网方式。从插槽上分,网卡有ISA和PCI两种;从速度上分,网卡又有10MB和100MB甚至传输速度更高的网卡。要求不高的话,一块PCI 10MB网卡就够用了。 五.疑难解答 返回顶部 (一).网卡安装故障检查方法 如果无法安装网卡驱动程序或安装网卡后无法登录网络,请按下述步骤检查处理: 1.选择“控制面板”/“系统”图标,打开“系统属性”窗口; 2.在“系统属性”窗口的“设备管理”标签的“按类型查看设备列表”中,双击“网络适配器”条目前的“ ”号将其展开,其下应当列出当前网卡; 3.如果“设备管理”标签中没有“网络适配器”条目或当前网卡前有一“X”号,说明系统没能识别网卡,可能产生的原因有网卡驱动程序安装不当、网卡硬件安装不当、网卡硬件故障等等; 参考 LAN(局域网)一词指位于同一区域甚至同一建筑物内的中小型计算机网络,字典上的解释是:将计算机和字处理机等电子办公设备连接在一起构成的办公室或建筑物内的网络系统。相信大多数人都在学校里、当地图书馆或朋友家里。接触过局域网。 随着宽带互联网日益流行,许多人家里都有几台计算机,家庭局域网正在形成规范。通过局域网共享宽带互联网访问可降低成本,不需要每台计算机都连接调制解调器和单独的IP地址。但如何构建一个家庭局域网共享宽带互联网访问呢? 网络带宽表示 网络带宽以兆位秒Mbps测量,通常不用兆字节秒MBps表示。一个字节有八个二进制位组成,多数人都熟悉MBps。当前局域网多为10base-T(10Mbps或1.25MBps)和100base-TX(100Mbps或12.5MBps)的以太网,使用类似标准电话线的RJ-45接口,通过网络电缆把集线器(或路由器、交换器)和计算机连接起来就构成了以太网。 网络布线 开始组建家庭局域网之前,应多少了解一些可用网络电缆的区别。这取决你家中PC机需要安排的位置,因为可能需要在墙上打眼,以穿过五类网络电缆。对家里地方不宽敞的人,这可能是令人畏缩的任务,甚至不太可能。如果你想避免穿墙打眼的麻烦,无线局域网也很方便,但应注意,无线局域网通常速度不够快,花费也高的多。另一种选择可考虑10Mbps电话线套件,利用你现成的电话线在计算机之间传送数据,可购买D-Link,Linksys,3Com和Netgear等公司的产品。不想采用无线局域网的人,可选择五类双绞线网络电缆。如果对电缆不熟悉,下面列出了电子工业协会EIA关于电缆分类的解释。根据电缆的速度和质量,可将电缆分为六类: 一、二类电缆:数据传输速度低于10Mbps(普通电话线) 三类电缆:数据传输速度达16 Mbps 四类电缆:数据传输速度达20 Mbps 五类电缆:数据传输速度达100 Mbps 五类电缆增强:数据传输速度达200 Mbps 六类电缆:数据传输速度达600 Mbps 五类电缆十分普通,连接以太网费用也较低。如果你计划穿墙打眼或使用超过50英尺五类电缆,应购买细电缆,自己动手将RJ-45插头接在电缆两端。注意,别忘了电缆穿过墙之后再接RI-45插头。 连接RJ-45插头 五类电缆连接RJ-45插头并不困难,但需要专用连接工具,可从当地五金商店买一把或从朋友处借用。操作时小心剪掉约1/4英寸电缆外塑料皮,露出电缆里面8根彩色线,注意放入RJ-45连接器里面电缆线的次序: 1、白绿 2、绿 3、白橙 4、兰 5、白兰 6、橙 7、白橙 8、棕 应仔细展开8条彩色编码线,放入RJ-45插孔中,用专用工具压紧。有条件时可用RJ-45测试器验证一下是否连接可靠,以免将来麻烦。 需要的硬件 首先确保每台计算机里都安装了网卡,100base-TX或10base-T网卡,型号、尺寸任意。注意,一般选PCI网卡,各网卡速率应一致。100base-TX网卡数据传输率较高,适合于大量数据传输,如数字电影或其它大的多媒体文件。 组建局域网需要使用集线器,交换器或内置集线器的路由器,集线器只不过用于将你所有的计算机连到局域网上。如果你只有2台计算机并且不打算增加数量,可以用一段电缆直接将2台计算机连起来,缺点是你试图共享宽带互联网访问仍然有麻烦。如果你想多台计算机访问宽带互联网,使用路由器是个好主意,可以选购Netgaer,D-Link和Linksys等著名网络公司的产品。 典型的以太网使用集线器或交换器,两种设备都有单独的连接器,用于将每台计算机连接到局域网上。集线器与交换器的主要差别在于吞吐量,集线器在所有在用的端口间分配吞吐量,因此4端口100base-TX集线器每个在用的端口只有25Mbps吞吐量。交换器更贵些,但允许每个端口全速运行。 假如你准备设置一个只有单个宽带互联网连接的局域网,应确保你的DSL或有线电缆供应商给你提供的是外置调制解调器。多数外置调制解调器通过网卡连接到你的计算机,你可把具有调制解调器的那台计算机设置为路由器,虽然这并不推荐。作为一个例子,你将电话插头接入宽带调制解调器,然后经RJ-45(双绞线)电缆连至集线器/交换器/路由器,从此,你的任一台计算机都可连接到互联网上。 设置Windows网络 确保你准备在局域网上使用的每台计算机,都有足够的五类电缆已连到了集线器或路由器。现在你可能已安装了适当的网卡以及相应的驱动程序,右击“网络邻居”,选择“属性”,可以看到当前已经安装的协议和网卡。要设置网络,应确保所用的网卡已安装了TCP/IP协议。如果你使用的微软操作系统是Windows98或更高版本,网络设置相当简单,Windows网络作为操作系统的基本选项之一应该已经安装了。如果你至少在一台计算机上使用的是Windows Me,你可运行家庭网络向导,将一步步引导你完成设置。记住,你需要使用相同的组名设置你网络中的每台计算机。在Windows95/98中,需要进入网络属性,并确保所有设置为缺省。你的互联网服务供应商ISP可能已经告诉你,如何设置TCP/IP,怎样连接到互联网。你可能是静态IP地址,或是动态IP地址,取决于你的ISP。静态IP地址设置需要的时间稍长一点,如果你想给互联网用户提供服务,如FTP,Web服务器或任何其它服务,静态IP地址是不错的。如果你分配的是IP地址,你的TCP/IP协议属性获得的应是自动选择的IP地址。要检查你的计算机是否已被集线器/路由器分配了一个IP地址,可使用Windows TP配置(进入开始 传输大点的东西,用iostat 1 查看io 来源于网络,供您参考

保持可爱mmm 2019-12-02 02:20:25 0 浏览量 回答数 0

问题

OracleASM管理

男刊 2019-12-01 21:33:34 7934 浏览量 回答数 2

问题

Redis 集群模式的工作原理能说一下么?【Java问答】36期

剑曼红尘 2020-06-12 15:07:18 2 浏览量 回答数 1

问题

HBase最佳实践-读性能优化策略

pandacats 2019-12-20 21:02:08 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板