技能篇linux服务性能问题排查及jvm调优思路
linuxCPU过高,怎么排查问题CPU指标解析平均负载平均负载等于逻辑CPU个数,表示每个CPU都恰好被充分利用。如果平均负载大于逻辑CPU个数,则负载比较重进程上下文切换无法获取资源而导致的自愿上下文切换被系统强制调度导致的非自愿上下文切换CPU使用率用户CPU使用率,包括用户态CPU使用率(user)和低优先级用户态CPU使用率(nice),表示CPU在用户态运行的时间百分比。用户CPU使用率高,通常说明有应用程序比较繁忙系统CPU使用率,表示CPU在内核态运行的时间百分比(不包括中断),系统CPU使用率高,说明内核比较繁忙等待IO的CPU使用率,通常也称为iowait,表示等待IO的时间百分比。iowait高,说明系统与硬件设备的IO交互时间比较长软中断和硬中断的CPU使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,表明系统发生了大量的中断查看系统的平均负载uptime10:54:52up1124days,16:31,6users,loadaverage:3。67,2。13,1。7910:54:52是当前时间;up1124days,16:31是系统运行时间;6users则是正在登录用户数。而最后三个数字依次是过去1分钟、5分钟、15分钟的平均负载(LoadAverage)。平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数当平均负载高于CPU数量70的时候,就应该分析排查负载高的问题。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能平均负载与CPU使用率关系CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的IO密集型进程,等待IO也会导致平均负载升高,但CPU使用率不一定很高大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高CPU上下文切换进程上下文切换:进程的运行空间可以分为内核空间和用户空间,当代码发生系统调用时(访问受限制的资源),CPU会发生上下文切换,系统调用结束时,CPU则再从内核空间换回用户空间。一次系统调用,两次CPU上下文切换系统平时会按一定的策略调用进程,会导致进程上下文切换进程在阻塞等到访问资源时,也会发生上下文切换进程通过睡眠函数挂起,会发生上下文切换当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起线程上下文切换:同一进程里的线程,它们共享相同的虚拟内存和全局变量资源,线程上下文切换时,这些资源不变线程自己的私有数据,比如栈和寄存器等,需要在上下文切换时保存切换中断上下文切换:为了快速响应硬件的事件,中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件查看系统的上下文切换情况:
vmstat和pidstat。vmvmstat可查看系统总体的指标,pidstat则详细到每一个进程服务的指标vmstat21procsmemoryswapiosystemcpurbswpdfreebuffcachesisobiboincsussyidwast10034984723158363819540000120319600cs(contextswitch)是每秒上下文切换的次数in(interrupt)则是每秒中断的次数r(RunningorRunnable)是就绪队列的长度,也就是正在运行和等待CPU的进程数。当这个值超过了CPU数目,就会出现CPU瓶颈b(Blocked)则是处于不可中断睡眠状态的进程数pidstatwLinux3。10。0862。el7。x8664(8f57ec39327b)07112021x8664(6CPU)06:43:23PMUIDPIDcswchsnvcswchsCommand06:43:23PM010。000。00java06:43:23PM01020。000。00bash06:43:23PM01500。000。00pidstat各项指标解析PID进程idCswchs每秒主动任务上下文切换数量Nvcswchs每秒被动任务上下文切换数量。大量进程都在争抢CPU时,就容易发生非自愿上下文切换Command进程执行命令怎么排查CPU过高问题先使用top命令,查看系统相关指标。如需要按某指标排序则使用topo字段名如:topoCPU。o可以指定排序字段,顺序从大到小topoMEMtop18:20:27up26days,8:30,2users,loadaverage:0。04,0。09,0。13Tasks:168total,1running,167sleeping,0stopped,0zombieCpu(s):0。3us,0。5sy,0。0ni,99。1id,0。0wa,0。0hi,0。1si,0。0stKiBMem:32762356total,14675196used,18087160free,884buffersKiBSwap:2103292total,0used,2103292free。6580028cachedMemPIDUSERPRNIVIRTRESSHRSCPUMEMTIMECOMMAND2323mysql20019。918g4。538g9404S0。33314。52352:51。44mysqld1260root20079334921。173g14004S0。3333。75358:20。74java1520daemon2003581403980776S0。3330。0126:19。55httpd1503root2006917222401412S0。3330。0070:48。05httpd各项指标解析第一行统计信息区18:20:27当前时间up25days,17:29系统运行时间,格式为时:分1user当前登录用户数loadaverage:0。04,0。09,0。13系统负载,三个数值分别为1分钟、5分钟、15分钟前到现在的平均值Tasks:进程相关信息running正在运行的进程数sleeping睡眠的进程数stopped停止的进程数zombie僵尸进程数Cpu(s):CPU相关信息us:表示用户空间程序的cpu使用率(没有通过nice调度)sy:表示系统空间的cpu使用率,主要是内核程序ni:表示用户空间且通过nice调度过的程序的cpu使用率id:空闲cpuwa:cpu运行时在等待io的时间hi:cpu处理硬中断的数量si:cpu处理软中断的数量Mem内存信息total物理内存总量used使用的物理内存总量free空闲内存总量buffers用作内核缓存的内存量Swap内存信息total交换区总量used使用的交换区总量free空闲交换区总量cached缓冲的交换区总量找到相关进程后,我们则可以使用topHppid或pidstattppid命令查看进程具体线程使用CPU情况,从而找到具体的导致CPU高的线程us过高,则可以在对应java服务根据线程ID查看具体详情,是否存在死循环,或者长时间的阻塞调用。java服务可以使用jstack如果是sy过高,则先使用strace定位具体的系统调用,再定位是哪里的应用代码导致的如果是si过高,则可能是网络问题导致软中断频率飙高wa过高,则是频繁读写磁盘导致的。linux内存查看内存使用情况使用top或者free、vmstat命令toptop18:20:27up26days,8:30,2users,loadaverage:0。04,0。09,0。13Tasks:168total,1running,167sleeping,0stopped,0zombieCpu(s):0。3us,0。5sy,0。0ni,99。1id,0。0wa,0。0hi,0。1si,0。0stKiBMem:32762356total,14675196used,18087160free,884buffersKiBSwap:2103292total,0used,2103292free。6580028cachedMemPIDUSERPRNIVIRTRESSHRSCPUMEMTIMECOMMAND2323mysql20019。918g4。538g9404S0。33314。52352:51。44mysqld1260root20079334921。173g14004S0。3333。75358:20。74java。。。。bcctools软件包里的cachestat和cachetop、memleakachestat可查看整个系统缓存的读写命中情况cachetop可查看每个进程的缓存命中情况memleak可以用检查C、C程序的内存泄漏问题free命令内存指标freemtotalusedfreesharedbufferscachedMem:32107304141692019628489bufferscache:1996212144Swap:000shared是共享内存的大小,一般系统不会用到,总是0bufferscache是缓存和缓冲区的大小,buffers是对原始磁盘块的缓存,cache是从磁盘读取文件系统里文件的页缓存available是新进程可用内存的大小内存swap过高
Swap其实就是把一块磁盘空间或者一个本地文件,当成内存来使用。swap换出,把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。swap换入,在进程再次访问这些内存的时候,把它们从磁盘读到内存中来swap和内存回收的机制内存的回收既包括了文件页(内存映射获取磁盘文件的页)又包括了匿名页(进程动态分配的内存)对文件页的回收,可以直接回收缓存,或者把脏页写回磁盘后再回收而对匿名页的回收,其实就是通过Swap机制,把它们写入磁盘后再释放内存swap过高会造成严重的性能问题,页失效会导致频繁的页面在内存和磁盘之间交换一般线上的服务器的内存都很大,可以禁用swap可以设置procsysvmminfreekbytes,来调整系统定期回收内存的阈值,也可以设置procsysvmswappiness,来调整文件页和匿名页的回收倾向linux磁盘IO问题文件系统和磁盘磁盘是一个存储设备(确切地说是块设备),可以被划分为不同的磁盘分区。而在磁盘或者磁盘分区上,还可以再创建文件系统,并挂载到系统的某个目录中。系统就可以通过这个挂载目录来读写文件磁盘是存储数据的块设备,也是文件系统的载体。所以,文件系统确实还是要通过磁盘,来保证数据的持久化存储系统在读写普通文件时,IO请求会首先经过文件系统,然后由文件系统负责,来与磁盘进行交互。而在读写块设备文件时,会跳过文件系统,直接与磁盘交互linux内存里的Buffers是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB左右)。内核就可以把分散的写集中起来(优化磁盘的写入)linux内存里的Cached是从磁盘读取文件的页缓存,也就是用来缓存从文件读写的数据。下次访问这些文件数据时,则直接从内存中快速获取,而不再次访问磁盘磁盘性能指标使用率,是指磁盘处理IO的时间百分比。过高的使用率(比如超过80),通常意味着磁盘IO存在性能瓶颈。饱和度,是指磁盘处理IO的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为100时,磁盘无法接受新的IO请求。IOPS(InputOutputPerSecond),是指每秒的IO请求数吞吐量,是指每秒的IO请求大小响应时间,是指IO请求从发出到收到响应的间隔时间IO过高怎么找问题,怎么调优查看系统磁盘整体IOiostatxkd11Linux4。4。735default(ceshi44)2021年07月08日x8664(40CPU)Device:rrqmswrqmsrswsrkBswkBsavgrqszavgquszawaitrawaitwawaitsvctmutilsda0。082。480。3711。7127。80507。2488。530。021。3414。960。900。090。10sdb0。001。201。2816。6730。91647。8375。610。179。519。409。520。320。57rrqms:每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并wrqms:每秒对该设备的写请求被合并次数rs:每秒完成的读次数ws:每秒完成的写次数rkBs:每秒读数据量(kB为单位)wkBs:每秒写数据量(kB为单位)avgrqsz:平均每次IO操作的数据量(扇区数为单位)avgqusz:平均等待处理的IO请求队列长度await:平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)svctm:平均每次IO请求的处理时间(毫秒为单位)util:采用周期内用于IO操作的时间比率,即IO队列非空的时间比率查看进程级别IOpidstatdLinux3。10。0862。el7。x8664(8f57ec39327b)07112021x8664(6CPU)06:42:35PMUIDPIDkBrdskBwrskBccwrsCommand06:42:35PM011。050。000。00java06:42:35PM01020。040。050。00bashkBrds每秒从磁盘读取的KBkBwrs每秒写入磁盘KBkBccwrs任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生Command进程执行命令当使用pidstatd定位到哪个应用服务时,接下来则需要使用strace和lsof定位是那些代码在读写磁盘里的哪些文件,导致IO高的原因stracep18940strace:Process18940attached。。。mmap(NULL,314576896,PROTREADPROTWRITE,MAPPRIVATEMAPANONYMOUS,1,0)0x7f0f7aee9000mmap(NULL,314576896,PROTREADPROTWRITE,MAPPRIVATEMAPANONYMOUS,1,0)0x7f0f682e8000write(3,2018120515:23:01,709main。。。,314572844)314572844munmap(0x7f0f682e8000,314576896)0write(3,,1)1munmap(0x7f0f7aee9000,314576896)0close(3)0stat(tmplogtest。txt。1,{stmodeSIFREG0644,stsize943718535,。。。})0strace命令输出可以看到进程18940正在往文件tmplogtest。txt。1写入300mlsofp18940COMMANDPIDUSERFDTYPEDEVICESIZEOFFNODENAMEjava18940rootcwdDIR0,5040961549389java18940root2uCHR136,00t03devpts0java18940root3wREG8,1117944320303tmplogtest。txtFD表示文件描述符号,TYPE表示文件类型,NODENAME表示文件路径lsof也可以看出进程18940以每次300MB的速度往tmplogtest。txt写入linux网络IO问题
当一个网络帧到达网卡后,网卡会通过DMA方式,把这个网络包放到收包队列中;然后通过硬中断,告诉中断处理程序已经收到了网络包。接着,网卡中断处理程序会为网络帧分配内核数据结构(skbuff),并将其拷贝到skbuff缓冲区中;然后再通过软中断,通知内核收到了新的网络帧。内核协议栈从缓冲区中取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧硬中断:与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个硬中断软中断:为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,交给软中断来完成网络IO指标带宽,表示链路的最大传输速率,单位通常为bs(比特秒)吞吐量,表示单位时间内成功传输的数据量,单位通常为bs(比特秒)或者Bs(字节秒)吞吐量受带宽限制,而吞吐量带宽,也就是该网络的使用率延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如TCP握手延时),或一个数据包往返所需的时间(比如RTT)PPS,是PacketPerSecond(包秒)的缩写,表示以网络包为单位的传输速率。PPS通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即PPS可以达到或者接近理论最大值)。而基于Linux服务器的转发,则容易受网络包大小的影响网络的连通性并发连接数(TCP连接数量)丢包率(丢包百分比)查看网络IO指标查看网络配置ifconfigem1em1Linkencap:EthernetHWaddr80:18:44:EB:18:98inetaddr:192。168。0。44Bcast:192。168。0。255Mask:255。255。255。0inet6addr:fe80::8218:44ff:feeb:189864Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:3098067963errors:0dropped:5379363overruns:0frame:0TXpackets:2804983784errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:1661766458875(1584783。9Mb)TXbytes:1356093926505(1293271。9Mb)Interrupt:83TX和RX部分的errors、dropped、overruns、carrier以及collisions等指标不为0时,通常表示出现了网络IO问题。errors表示发生错误的数据包数,比如校验错误、帧同步错误等dropped表示丢弃的数据包数,即数据包已经收到了RingBuffer,但因为内存不足等原因丢包overruns表示超限数据包数,即网络IO速度过快,导致RingBuffer中的数据包来不及处理(队列满)而导致的丢包carrier表示发生carrirer错误的数据包数,比如双工模式不匹配、物理电缆出现问题等collisions表示碰撞数据包数网络吞吐和PPSsarnDEV1Linux4。4。735default(ceshi44)2022年03月31日x8664(40CPU)15时39分40秒IFACErxpckstxpcksrxkBstxkBsrxcmpstxcmpsrxmcstsifutil15时39分41秒em11241。001022。00600。48590。390。000。00165。000。4915时39分41秒lo636。00636。007734。067734。060。000。000。000。0015时39分41秒em40。000。000。000。000。000。000。000。0015时39分41秒em30。000。000。000。000。000。000。000。0015时39分41秒em226。0020。006。638。800。000。000。000。01rxpcks和txpcks分别是接收和发送的PPS,单位为包秒rxkBs和txkBs分别是接收和发送的吞吐量,单位是KB秒rxcmps和txcmps分别是接收和发送的压缩数据包数,单位是包秒宽带ethtoolem1grepSpeedSpeed:1000Mbs连通性和延迟pingwww。baidu。comPINGwww。a。shifen。com(14。215。177。38)56(84)bytesofdata。64bytesfrom14。215。177。38:icmpseq1ttl56time53。9ms64bytesfrom14。215。177。38:icmpseq2ttl56time52。3ms64bytesfrom14。215。177。38:icmpseq3ttl56time53。8ms64bytesfrom14。215。177。38:icmpseq4ttl56time56。0ms统计TCP连接状态工具ss和netstat〔rootroot〕gt;ssantawk{S〔1〕}END{for(ainS)printa,S〔a〕}LISTEN96CLOSEWAIT527ESTAB8520State1SYNSENT2TIMEWAIT660〔rootroot〕gt;netstatnawktcp{S〔NF〕}END{for(ainS)printa,S〔a〕}CLOSEWAIT530ESTABLISHED8511FINWAIT23TIMEWAIT809网络请求变慢,怎么调优高并发下TCP请求变多,会有大量处于TIMEWAIT状态的连接,它们会占用大量内存和端口资源。此时可以优化与TIMEWAIT状态相关的内核选项增大处于TIMEWAIT状态的连接数量net。ipv4。tcpmaxtwbuckets,并增大连接跟踪表的大小net。netfilter。nfconntrackmax减小net。ipv4。tcpfintimeout和net。netfilter。nfconntracktcptimeouttimewait,让系统尽快释放它们所占用的资源开启端口复用net。ipv4。tcptwreuse。这样,被TIMEWAIT状态占用的端口,还能用到新建的连接中增大本地端口的范围net。ipv4。iplocalportrange。这样就可以支持更多连接,提高整体的并发能力增加最大文件描述符的数量。可以使用fs。nropen和fs。filemax,分别增大进程和系统的最大文件描述符数SYNFLOOD攻击,利用TCP协议特点进行攻击而引发的性能问题,可以考虑优化与SYN状态相关的内核选项增大TCP半连接的最大数量net。ipv4。tcpmaxsynbacklog,或者开启TCPSYNCookiesnet。ipv4。tcpsyncookies,来绕开半连接数量限制的问题减少SYNRECV状态的连接重传SYNACK包的次数net。ipv4。tcpsynackretries加快TCP长连接的回收,优化与Keepalive相关的内核选项缩短最后一次数据包到Keepalive探测包的间隔时间net。ipv4。tcpkeepalivetime缩短发送Keepalive探测包的间隔时间net。ipv4。tcpkeepaliveintvl减少Keepalive探测失败后,一直到通知应用程序前的重试次数net。ipv4。tcpkeepaliveprobesjava应用内存泄漏和频繁GC区分内存溢出、内存泄漏、内存逃逸内存泄漏:内存被申请后始终无法释放,导致内存无法被回收使用,造成内存空间浪费内存溢出:指内存申请时,内存空间不足1内存上限过小2内存加载数据太多3分配太多内存没有回收,出现内存泄漏内存逃逸:是指程序运行时的数据,本应在栈上分配,但需要在堆上分配,称为内存逃逸java中的对象都是在堆上分配的,而垃圾回收机制会回收堆中不再使用的对象,但是筛选可回收对象,回收对象还有整理内存都需要消耗时间。如果能够通过逃逸分析确定对象不会逃出方法之外,那就可以让这个对象在栈上分配内存,对象所占用的内存就可以随栈帧出栈而销毁,就减轻了垃圾回收的压力线程同步本身比较耗时,如果确定一个变量不会逃逸出线程,无法被其它线程访问到,那这个变量的读写就不会存在竞争,对这个变量的同步措施可以清除java虚拟机中的原始数据类型(int,long及reference类型等)都不能再进一步分解,它们称为标量。如果一个数据可以继续分解,那它称为聚合量,java中最典型的聚合量是对象。如果逃逸分析证明一个对象不会被外部访问,并且这个对象是可分解的,那程序运行时可能不创建该对象,而改为直接创建它的若干个被方法使用到的成员变量来代替。拆散后的变量便可以被单独分析与优化,可以各自分别在栈帧或寄存器上分配空间,原本的对象就无需整体分配空间内存泄漏,该如何定位和处理使用jmaphisto:live〔pid〕和jmapdump:formatb,filefilename〔pid〕前者可以统计堆内存对象大小和数量,后者可以把堆内存dump下来启动参数中指定XX:HeapDumpOnOutOfMemoryError来保存OOM时的dump文件使用JProfiler或者MAT软件查看heap内存对象,可以更直观地发现泄露的对象java线程问题排查java线程状态NEW:对应没有Started的线程,对应新生态RUNNABLE:对于就绪态和运行态的合称BLOCKED,WAITING,TIMEDWAITING:三个都是阻塞态sleep和join称为WAITINGsleep和join方法设置了超时时间的,则是TIMEDWAITINGwait和IO流阻塞称为BLOCKEDTERMINATED:死亡态线程出现死锁或者被阻塞jstacklpidgrepiEBLOCKEDdeadlock,加上参数l,jstack命令可以快速打印出造成死锁的代码jstackl28764FullthreaddumpJavaHotSpot(TM)64BitServerVM(13。0。28mixedmode,sharing):。。。。。Thread014prio5osprio0cpu0。00mselapsed598。37stid0x000001b3c25f7000nid0x4abcwaitingformonitorentry〔0x00000061661fe000〕java。lang。Thread。State:BLOCKED(onobjectmonitor)atcom。TestDieLock。run(Test。java:52)waitingtolock0x0000000712d7c230(ajava。lang。Object)locked0x0000000712d7c220(ajava。lang。Object)atjava。lang。Thread。run(java。base13。0。2Thread。java:830)Lockedownablesynchronizers:NoneThread115prio5osprio0cpu0。00mselapsed598。37stid0x000001b3c25f8000nid0x1984waitingformonitorentry〔0x00000061662ff000〕java。lang。Thread。State:BLOCKED(onobjectmonitor)atcom。TestDieLock。run(Test。java:63)waitingtolock0x0000000712d7c220(ajava。lang。Object)locked0x0000000712d7c230(ajava。lang。Object)atjava。lang。Thread。run(java。base13。0。2Thread。java:830)。。。。。FoundoneJavaleveldeadlock:Thread0:waitingtolockmonitor0x000001b3c1e4c480(object0x0000000712d7c230,ajava。lang。Object),whichisheldbyThread1Thread1:waitingtolockmonitor0x000001b3c1e4c080(object0x0000000712d7c220,ajava。lang。Object),whichisheldbyThread0Javastackinformationforthethreadslistedabove:Thread0:atcom。TestDieLock。run(Test。java:52)waitingtolock0x0000000712d7c230(ajava。lang。Object)locked0x0000000712d7c220(ajava。lang。Object)atjava。lang。Thread。run(java。base13。0。2Thread。java:830)Thread1:atcom。TestDieLock。run(Test。java:63)waitingtolock0x0000000712d7c220(ajava。lang。Object)locked0x0000000712d7c230(ajava。lang。Object)atjava。lang。Thread。run(java。base13。0。2Thread。java:830)Found1deadlock。从jstack输出的日志可以看出线程阻塞在Test。java:52行,发生了死锁常用jvm调优启动参数verbose:gc输出每次GC的相关情况verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息Xmsn指定jvm堆的初始大小,默认为物理内存的164,最小为1M;可以指定单位,比如k、m,若不指定,则默认为字节Xmxn指定jvm堆的最大值,默认为物理内存的14或者1G,最小为2M;单位与Xms一致Xssn设置单个线程栈的大小,一般默认为512kXX:NewRatio4设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的15Xmn设置新生代内存大小。整个堆大小年轻代大小年老代大小持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的38XX:SurvivorRatio4设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的16XX:MaxTenuringThreshold0设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率欢迎指正文中错误
原文地址:https:www。cnblogs。comcscwp16087758。html
5。16个人首套房商贷利率下限下调可低至4。4桥水清仓特斯拉【国际市场要闻速递】:1、上周五美股强势反弹,道指涨1。47;纳指涨3。82;标普500涨2。39。大型科技股多数走高,Netflix涨超7,亚马逊、特斯拉涨超5,……
美股盘前三大期指齐挫,两大原油期货跌逾1,摩根大通上调阿里腾每经记者:文巧每经编辑:高涵截至发稿,道指期货跌0。16、标普500指数期货跌0。32、纳指期货跌0。45。WTI原油期货跌1。0227至109。35美元桶,布伦特原油期……
华自科技最新公告拟定增募资不超过9。1亿元华自科技公告,拟定增募资不超过9。1亿元,用于储能电站建设项目、城步儒林100MW200MWh储能电站建设、冷水滩区谷源变电站100MW200MWh储能项目、工业园区光伏储能一……
写打雪仗作文下雪天,最开心的莫过于打雪仗了,那么,以下是小编给大家整理收集的写打雪仗作文,供大家阅读参考。篇一:写打雪仗作文又是一个美丽的冬天,大雪再一次如期而至,纷纷扬扬,飘飘撒撒……
初三看似平常作文也许那愈是平常的,愈是会淹没在时间的流里。题记习惯不知不觉变得可怕而又麻木起来,时间的流在眼上留下了一层朦胧的白色水垢,直到泪水把它洗净后才发现,过去的一切,也只是……
三八妇女节贺词范文三月的蓓蕾绽放早春第一抹殷红,新女性的诗行演绎着奋进的感动;透过大街小巷流动的情绪,我们感受着节日的和风;女人不再是世界的点缀,巾帼不让须眉臂膀同样坚挺。值此三八节来临之……
第一次帮妈妈劳动作文在生活中,我有许多第一次。正因为那些第一次,我才会生活地那样自如。这天,我们一家人聚在一起,拿电饼档摊煎饼。起初,是爸爸妈妈交换来干活。我看着他们快速又优美的动作,心里也……
正月十五夜灯作文最新导语:天空中的礼花绽放的如此绚丽,红色,绿色和黄色似乎要包裹住整个天空,四处都可以听到震耳欲聋的鞭炮声。下面是小编整理的正月十五夜灯作文,请大家认真阅读!【正月十五夜灯作……
2021冬季运动会稿件100字【篇一】为了梦想,我们奔跑。我们跑过日出日落,跑过春耕秋收,看尽花开花败,阅尽人生百味。我们不停地、拼命的奔跑,只为了前方一个未知的将来。而我们不曾害怕,我们……
2016中考作文解析及范文人生的山顶其实没有捷径中考已经拉开帷幕,小编整理了中考的作文范文,快来看看吧。人生如登山,或许因为太在意登上山顶,我们往往没有慎重选择路径就匆匆出发。于是,有人踏上大道,有人走进小路,有人奔向……
初二写人作文奶奶的身影自从爷爷有了新工作后,家里白天就只剩奶奶一个人孤零零地独守空巢。奶奶年纪大了不会玩手机,她也不想学,每天就是去菜地里看看奶奶和我一起种的蔬菜。奶奶看到蔬菜仿佛就像看到了我……
有风的夜我倾听作文在风极大极冷的夜里带着儿子陪着老爸爬山,月亮没有圆满可是很亮,照下来树影和山影都朦朦胧胧,太冷,太安静了。山路上偶尔还是有行人对面走来向山下走去,上山的人几乎没有。儿子吓得紧紧……
2006年四川高考满分作文洪战辉的人生答卷人应该怎样的如果把人的一生比作一场考试,那么,怀化学院在读大学生洪战辉的人生考卷属于好难好难的那一种。而他的人生答卷呢,却是好美好美的那一种。那么我们要问:好难好难,难在……
门店如何做好线上推广和促销活动?感谢头条君邀答!我是黄翰德,国家高级营销师,餐饮经营实践15年。欢迎关注我(知行创黄翰德)!问题所问:‘’门店如何搞好线上推广和促销活动?‘’问题关键词:门店、线上……
童年里的樱花雨作文在日常的学习、工作、生活中,大家都不可避免地要接触到作文吧,写作文可以锻炼我们的独处习惯,让自己的心静下来,思考自己未来的方向。那么你知道一篇好的作文该怎么写吗?下面是小编为大……
坚守我的的追求作文如果你是一粒树种落在了山坳里,一旦长成了参天大树,你就只能够坚守一方土地,为它奉献一生,不再离开。如果你是一只小鸟飞翔在蓝天上,无论你身在何方,你都可以凭借翅膀翱翔四方。材料中……
中华酷联曾经国产手机里的四大天王,现在如何了?你好,我是亚麻数码,下面我来回答这个问题吧!大家是否记得曾经的手机中的四大天王?中兴,华为,酷派,联想呢?或许现在已经忘记了他们,只是注重于现在的小米,魅族,一加,锤子等……
小学生感恩父亲作文结尾不管工作多忙多累,爸爸每天晚上都给我辅导功课,通常一检查就检查到十一点多。有一天晚上,爸爸加班回来,已经9点半了,还是要给我检查作业,我说:爸爸,你已经很累了,是不是早点休息,……
关于灯展的观后感灯展观后感(一)随着时间不断变快,很快就来到了年,在年刚开始的时间,让我觉得最有意义的事是去观年观音灯会。那天,我吃完晚饭,约好我的同学夏健夫一起去看观音灯会。刚走……
实用的小学生一年级的作文400字3篇在日常生活或是工作学习中,大家最不陌生的就是作文了吧,借助作文可以提高我们的语言组织能力。你写作文时总是无从下笔?以下是小编整理的小学生一年级的作文400字3篇,希望对大家有所……
跑步作文范文5篇一年级跑步作文篇1我们班举行跑步比赛,操场上人山人海,哥哥都是跑步健将。跑步比赛开始了:选手们信心百倍的站在起跑线上,裁判员一声令下,选手们飞奔而去,观众们在台上窃……
工业互联网白皮书(一)2018工业互联网平台创新发展白皮书一所。pdf2018年工业互联网案例汇编典型安全解决方案案例。pdf2020工业互联网安全发展与实践分析报告奇安信。pdf……
砍单1。7亿部,手机芯片厂商迎至暗时刻?根据中国信息通信研究院此前公布的数据,国内市场手机1月出货量为3302万部,同比下降17。7;2月出货量为1486万部,同比下降31。7。消息称苹果可能削减2000万部新……
我的同桌孙悟空作文前几天,我们班调座了,我的同桌竟然是孙悟空,听到后,你一定很吃惊吧?可是我告诉你,她还是一个女生哦!孙悟空有着一双乌黑明亮的大眼睛,双眼皮。乍一看并没有什么特别,可仔细一……