两句格言警句
时间:2022-04-09 17:15 | 分类: 句子大全 | 作者:java互联网架构 | 评论: 次 | 点击: 次
两句格言警句
1. 求两句名言名句
君有奇才我不贫。
-(清)郑板桥 海内存知已,天涯若比邻 。 -(唐)王勃 同是天涯沦落人,相逢何必曾相识。
-(唐)白居易 莫愁前路无知已,天下谁人不识君。 -(唐)高适 天下快意之事莫若友,快友之事莫若谈。
-(清)蒲松龄 人之相识,贵在相知,人之相知,贵在知心。 -(春秋)孟子 君子之交淡若水,小人之交甘若醴.君子淡以亲,小人甘以绝。
-(战国)庄子 近朱者赤,近墨者黑 。 -(西晋)付玄 人生贵相知,何用金与钱。
-(唐)李白 与朋友交,言而有信。 -(春秋)子夏 布衣之交不可忘。
-(唐)李延寿 君子与君子以同道为朋,小人与小人以同利为朋 。 -(宋)欧阳修 人生乐在相知心 。
-(宋)王安石 冤家宜解不宜结,各自回头看后头。 -(明)冯梦龙 于患难风豪杰。
-(清)魏禧 万两黄金容易得,知心一个也难求 。 -(清)曹雪芹 换我心,为你心,始知相忆深。
-(宋)顾夏 钟子期死,伯牙终身不复鼓琴。 -《汉书》 山河不足重,重在遇知已。
-鲍溶 大丈夫处世处,当交四海英雄。 -《三国志.蜀书.刘巴传》 君子上交不诌,下交不渎。
-《周易》 若知四海皆兄弟,何处相逢非故人。 -陈刚中 朋友,以义合者。
-(宋)朱熹 衣不如新, 人不如故。 -《汉乐府》 同心而共济,始终如一 。
-(宋)欧阳修 一死一生,乃知交情。一贫一富,乃知交态。
一贵一贱,交情乃见。 -《史记》 未言心相醉,不再接杯酒。
-(晋)陶渊明 人生交契无老少,论交何必先同调。 -(唐)杜甫 交心不交面,从此重相忆。
-(唐)白居易 人生结交在终始,莫为升沉中路分。 -(唐)贺兰进明 今日乐相乐,别后莫相忘。
-(三国)曹植 相识满天下,知心能几人。 -(明)冯梦龙 少年乐相知,衰暮思 故友。
-(唐)韩愈 一贵一贱交情见。 -(唐)骆宾王 相知在急难,独好亦何益。
-(唐)李白 投之以木瓜,抱之以琼瑶。匪报也,永以为好也。
-《诗经》 人生所贵在知已,四海相逢骨肉亲。 -《雁门集》 合意友来情不厌,知心人至话投机。
-(明)冯梦龙 二人同心,其利断金。 -《易.系辞上》 婴其呜矣,求其友声 。
-《诗经.小雅》 乐莫乐兮新相知。 -(战国)屈原 刎颈之交。
-《汉书.诸葛丰传》 知音世所稀。 -(唐)孟浩然 朋友切切思思。
-《论语.子路》 礼尚往来。 -《礼记.曲礼》 君子以文会友,以友辅仁。
-《论语.颜渊》 以财交者,财尽则交绝;以色交者,华落而爱渝。 -《战国策》 夫大寒至,霜雪降,然后知松柏之茂也。
-《淮南子》 以权利合者,权力尽而交疏。 -《史记》 路遥知马力,日久见人心。
-《元曲选.争报恩》 相知无远近,万里尚为邻。 -(唐)张九龄 相逢方一笑,相送还成泣。
-(唐)王维 桃花潭水深千尺,不及汪伦送我情。 -(唐)李白 交情老更亲。
-(唐)杜甫 虽有兄弟,不如友生。 -《抱朴子.交际》 君子淡如水,岁久情愈真。
小人口如蜜,转眼如仇人。 -《逊志斋集》 朋友之交不宜浮杂。
-《抱朴子.交际》 势力之交难以经远。 -(晋)陆机 丈夫结交须结贫,贫者结交交始亲。
-(唐)高适 落地为兄弟,何必骨肉亲。 -陶潜 味甘终易坏,岁晚还知,君子之交淡如水。
-(南宋)辛弃疾 君子交绝,不出恶声 。 -《战国策》 人生得一知已足矣,斯世当以同怀视之。
-鲁迅 找一个赞美你的朋友,不如找一个挑你刺的朋友。 -《当代青年谈人生》 人家帮我,永志不忘,我帮人家,莫记心上 。
-华罗庚 在背后称赞我们的人就是我们的良友。 -(西)塞万提斯 事实上,每个人的朋友中都 有先进与落后的,问题在于我们怎样去帮助后进朋友,使他进步,切莫跟着他随波逐流,这才是真正的“够朋友”。
-谢觉哉 友情在我过去的生活里就像一盏明灯,照彻了我的灵魂,使我的生存有了一点点光彩。 -巴金 三朋四友,吃喝玩乐,这叫做“酒肉朋友”,朋友相聚,不谈工作,不谈学习,不谈政治,只谈个人之间私利私愤的事,这叫做“群居终日,言不乃义” 。
-谢觉哉 友谊永远是美德的辅佐,不是罪恶的助手 。 -(罗马)西塞罗 愚蠢的朋友比明智的敌人更糟糕。
-(印度)释迦牟尼 谁若想在厄运时得到援助,就应在平日待人以宽。 -(波斯)萨迪 把友谊归结为利益的人,我以为是把友谊中最宝贵的东西勾销了。
-(罗马)西塞罗 有些人对你恭维不离口,可全都不是患难朋友 -(英)莎士比亚 那此忘恩的人,落在困难之中,是不能得救的。 -(希腊)伊索 友谊真是一样最神圣的东西,不仅值得特别推崇,而是值得永远赞扬。
-(意)卜伽丘 趋炎附势的小人,不可共患难 ! -(英)拜伦 你若聪明,莫把那人当作朋友,假如他和你的敌人交情深厚。 -(波斯)萨迪 友谊永远是一个甜蜜的责任,从来不是一种机会。
-(黎)纪伯伦 患难识朋友 。 -(苏)列宁 在快乐时,朋友会认识我们;在患难时,我们会认识朋友。
-(英)柯林斯 在紧急时舍弃你的朋友不可信赖。 -(希腊)伊索 不要靠馈赠去获得朋友。
你须贡献你诚挚的爱,学会怎样用正当的方法来赢得一个人的心。 -(希腊)苏拉格底 择友宜慎,弃之更宜慎。
-(美)富兰格林 朋友是抵抗忧愁、不愉快和恐惧的保卫者,是友爱与信赖的罐子。 -《五卷书》 朋友之间保持一定的距离,而使友谊永存。
-查理士 阴险的友谊虽然允许你得到一些微不足。
2. 求两句名言警句
自己活着,就是为了使别人活得更美好。--雷锋
谁要是游戏人生,他就一事无成;谁不能主宰自己,永远是一个奴隶。--歌德
希望是附丽于存在的,有存在,便有希望,有希望 ,便是光明。--鲁迅
人间没有永恒的夜晚,世界没有永恒的冬天。 --艾青
过去属于死神,未来属于你自己。--雪莱
冬天已经到来,春天还会远吗? --雪莱
假如生活欺骗了你,不要忧郁,也不要愤慨!不顺心的时候暂且容忍:相信吧,快乐的日子就会到来。 --普希金
一个人的价值 , 应当看他贡献什么 , 而不应当看他取得什么。-- 爱因斯坦
对于我来说 , 生命的意义在于设身处地替人着想 , 忧他人之忧 , 乐他人之乐。 -- 爱因斯坦
生活真象这杯浓酒 , 不经三番五次的提炼呵 , 就不会这样一来可口 ! -- 郭小川
辛勤的蜜蜂永没有时间悲哀。-- 布莱克
希望是厄运的忠实的姐妹。 --普希金
君子喻于义 , 小人喻于利。 -- 孔丘
富贵不淫贫贱乐 , 男儿到此是豪雄。-- 程颢
我从不把安逸和快乐看作是生活的本身 -- 这种伦理基础,我叫它猪栏的理想。 -- 爱因斯坦
但是话不行,要紧的是做。 -- 鲁迅
判断一个人,不是根据他自己的表白或对自己的看法,而是根据他的行动。 -- 列宁
有些人因为贪婪 ,想得更多的东西,却把现在所有的也失掉了。 -- 伊索
作家当然必须挣钱才能生活,写作,但是他决不应该为了挣钱而生活,写作。-- 马克思
人们所努力追求的庸俗的目标 -- 我总觉得都是可鄙的。 -- 爱因斯坦
生,亦我所欲也;义,亦我所欲也:二者不可得兼,舍生而取义者也。-- 孟轲
君子坦荡荡,小人长戚戚。 -- 孔丘
路是脚踏出来的 , 历史是人写出来的,人的每一步行动都在书定自己的历史。 -- 吉鸿昌
3. 找两句名言警句
1、慈父之爱子,非为报也。
——淮南子 2、父爱可以牺牲自己的一切,包括自己的的生命。——达芬奇 3、父亲的德行是儿子最好的遗产。
——塞万提斯 父爱如伞,为你遮风挡雨;父爱如雨,为你濯洗心灵;父爱如路,伴你走完人生。 恐惧时,父爱是一块踏脚的石;黑暗时,父爱是一盏照明的灯;枯竭时,父爱是一湾生命之水;努力时,父爱是精神上的支柱;成功时,父爱又是鼓励与警钟。
父爱,如大海般深沉而宽广。 父爱是沉默的,如果你感觉到了那就不是父爱了! 父爱是水 ————高尔基 父之美德,儿之遗产。
字严 父母德高;子女良教。《格言对联》 有子且勿喜,无子固勿叹。
〖唐〗韩愈。
4. 请问两句名言名句
无题 李商隐相见时难别亦难,东风无力百花残。 春蚕到死丝方尽,蜡炬成灰泪始干。 晓镜但愁云鬓改,夜吟应觉月光寒。 蓬山此去无多路,青鸟殷勤为探看。
《咸阳城东楼》唐·许浑一上高楼万里愁 蒹葭杨柳似汀洲溪云初起日沉阁 山雨欲来风满楼鸟下绿芜秦苑夕 蝉鸣黄叶汉宫秋行人莫问当年事 故国东来渭水流
话说诗人正在凭栏送目,远想概然,那一轮平西的红日,已然渐薄溪山,也不知过了多久,忽见一片云生,暮色顿至,不一时,已经隐隐挨近西边的寺阁了;云生日落,片刻之间,“天地异色”,那境界已然变了,谁知紧接着一阵凉风吹来城上,顿时吹得那城楼越发空空落落,萧然凛然。诗人凭着“生活经验”,知道这风是雨的先导,风已飒然,雨势迫在眉睫了。景色迁动,心情变改,捕捉在“溪云初起日沉阁,山雨欲来风满楼”之中,使后人都如身在楼城之上,风雨之间,不亏为不朽名句。 “溪云初起日沉阁,山雨欲来风满楼”,将云、日、雨、风四个同性同类的“俗”字连用在一处,而四者的关系是如此的清晰,如此的自然,如此的流动,却又颇极错综辉映之妙。云起日落,雨来风满,在“事实经过”上是一层推进一层,井然有序,将“形势逼人”很自然地展现在人们的面前,使身临其境的人们必定要作出自己的选择:观望、迎头而上还是退却?“山雨欲来风满楼”就是这样一种意境,后人多借用到政治斗争的形势紧迫、或突发事件的暴发前夕等方面的先兆。
5. 两句关于学习的名言警句
1).劝人珍惜光阴
黑发不知勤学早,白首方悔读书迟
少年易学老难成,一寸光阴不可轻
一寸光阴一寸金,存金难买存光阴
少壮不努力,老大徒伤悲
(2).告戒人要诚信
1.志不强者智不达,言不信者行不果。
--墨翟,战国思想家
2.内外相应,言行相称。
--韩非,战国哲学家、教育家
3.善不由外来兮,名不可以虚作。
--屈原,战国诗人
4.真者,精诚之至也,不精不诚,不能动人。
--庄周,战国哲学家
5.人背信则名不达。
--刘向,汉朝经学家
6.伪欺不可长,空虚不可久,朽木不可雕,情亡不可久。
--韩婴,汉朝诗论家
7.以信接人,天下信之;不以信接人,妻子疑之。
--畅泉,晋朝隐士
8.人无忠信,不可立于世。
--程颐,宋朝哲学家
9.多虚不如少实。
--陈甫,宋朝哲学家
10.以实待人,非唯益人,益己尤大。
--杨简,宋朝学者
11.诚实是人生的命脉,是一切价值的根基。
--德莱赛,英国作家
12.言忠信,行笃敬。
--论语
13.欺人只能一时,而诚实却是长久之策。
--约翰雷,英国学者
14.生命不能从谎言之中开出灿烂的鲜花。
--海涅,德国诗人
15.老老实实最能打动人心。
16.对己能真,对人就能去伪,就像黑夜接着白天,影子随着身形。
--莎士比亚,英国戏剧家
17.没有诚实何来尊严?
--西赛罗,古罗马政治家
18.人如失去了诚实,也就失去了一切。
--黎里,英国散文家
19.诚实最好的政策。
--弗兰克林
20.人若能摒弃虚伪则会获得极大的心灵平静。
--马克吐温
解Bug之路——Nginx 502 Bad Gateway
转载:https://www.cnblogs.com/alchemystar/p/13409534.html
前言
事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻。当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在脑中闪现。甚至一些边边角角的现象都能很快的反应过来是为何。笔者读过一些Linux TCP协议栈的源码,就在解决下面这个问题的时候有一种非常流畅的感觉。
Bug现场
首先,这个问题其实并不难解决,但是这个问题引发的现象倒是挺有意思。先描述一下现象吧,笔者要对自研的dubbo协议隧道网关进行压测(这个网关的设计也挺有意思,准备放到后面的博客里面)。先看下压测的拓扑吧:
为了压测笔者gateway的单机性能,两端仅仅各保留一台网关,即gateway1和gateway2。压到一定程度就开始报错,导致压测停止。很自然的就想到,网关扛不住了。
网关的情况
去Gateway2的机器上看了一下,没有任何报错。而Gateway1则有大量的502报错。502是Bad Gateway,Nginx的经典报错,首先想到的就是Gateway2不堪重负被Nginx在Upstream中踢掉。
那么,就先看看Gateway2的负载情况把,查了下监控,发现Gateway2在4核8G的机器上只用了一个核,完全看不出来有瓶颈的样子,难道是IO有问题?看了下小的可怜的网卡流量打消了这个猜想。
Nginx所在机器CPU利用率接近100%
这时候,发现一个有意思的现象,Nginx确用满了CPU!
再次压测,去Nginx所在机器上top了一下,发现Nginx的4个Worker分别占了一个核把CPU吃满-_-!
什么,号称性能强悍的Nginx竟然这么弱,说好的事件驱动\epoll边沿触发\纯C打造的呢?一定是用的姿势不对!
去掉Nginx直接通信毫无压力
既然猜测是Nginx的瓶颈,就把Nginx去掉吧。Gateway1和Gateway2直连,压测TPS里面就飙升了,而且Gateway2的CPU最多也就吃了2个核,毫无压力。
去Nginx上看下日志
由于Nginx机器权限并不在笔者手上,所以一开始没有关注其日志,现在就联系一下对应的运维去看一下吧。在accesslog里面发现了大量的502报错,确实是Nginx的。又看了下错误日志,发现有大量的
Cannot assign requested address
由于笔者读过TCP源码,一瞬间就反应过来,是端口号耗尽了!由于Nginx upstream和后端Backend默认是短连接,所以在大量请求流量进来的时候回产生大量TIME_WAIT的连接。
而这些TIME_WAIT是占据端口号的,而且基本要1分钟左右才能被Kernel回收。
cat /proc/sys/net/ipv4/ip_local_port_range3276861000
也就是说,只要一分钟之内产生28232(61000-32768)个TIME_WAIT的socket就会造成端口号耗尽,也即470.5TPS(28232/60),只是一个很容易达到的压测值。事实上这个限制是Client端的,Server端没有这样的限制,因为Server端口号只有一个8080这样的有名端口号。而在upstream中Nginx扮演的就是Client,而Gateway2就扮演的是Nginx
为什么Nginx的CPU是100%
而笔者也很快想明白了Nginx为什么吃满了机器的CPU,问题就出来端口号的搜索过程。
让我们看下最耗性能的一段函数:
int __inet_hash_connect(...){// 注意,这边是static变量static u32 hint;// hint有助于不从0开始搜索,而是从下一个待分配的端口号搜索u32 offset = hint + port_offset;.....inet_get_local_port_range(&low, &high);// 这边remaining就是61000 - 32768remaining = (high - low) + 1......for (i = 1; i <= remaining; i++) {port = low + (i + offset) % remaining;/* port是否占用check */....goto ok;}.......ok:hint += i;......}
看上面那段代码,如果一直没有端口号可用的话,则需要循环remaining次才能宣告端口号耗尽,也就是28232次。而如果按照正常的情况,因为有hint的存在,所以每次搜索从下一个待分配的端口号开始计算,以个位数的搜索就能找到端口号。如下图所示:
所以当端口号耗尽后,Nginx的Worker进程就沉浸在上述for循环中不可自拔,把CPU吃满。
为什么Gateway1调用Nginx没有问题
很简单,因为笔者在Gateway1调用Nginx的时候设置了Keepalived,所以采用的是长连接,就没有这个端口号耗尽的限制。
Nginx 后面有多台机器的话
由于是因为端口号搜索导致CPU 100%,而且但凡有可用端口号,因为hint的原因,搜索次数可能就是1和28232的区别。
因为端口号限制是针对某个特定的远端server:port的。所以,只要Nginx的Backend有多台机器,甚至同一个机器上的多个不同端口号,只要不超过临界点,Nginx就不会有任何压力。
把端口号范围调大
比较无脑的方案当然是把端口号范围调大,这样就能抗更多的TIME_WAIT。同时将tcp_max_tw_bucket调小,tcp_max_tw_bucket是kernel中最多存在的TIME_WAIT数量,只要port范围 - tcp_max_tw_bucket大于一定的值,那么就始终有port端口可用,这样就可以避免再次到调大临界值得时候继续击穿临界点。
cat /proc/sys/net/ipv4/ip_local_port_range2276861000cat /proc/sys/net/ipv4/tcp_max_tw_buckets20000
开启tcp_tw_reuse
这个问题Linux其实早就有了解决方案,那就是tcp_tw_reuse这个参数。
echo '1' > /proc/sys/net/ipv4/tcp_tw_reuse
事实上TIME_WAIT过多的原因是其回收时间竟然需要1min,这个1min其实是TCP协议中规定的2MSL时间,而Linux中就固定为1min。
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT * state, about 60 seconds*/
2MSL的原因就是排除网络上还残留的包对新的同样的五元组的Socket产生影响,也就是说在2MSL(1min)之内重用这个五元组会有风险。为了解决这个问题,Linux就采取了一些列措施防止这样的情况,使得在大部分情况下1s之内的TIME_WAIT就可以重用。下面这段代码,就是检测此TIME_WAIT是否重用。
__inet_hash_connect|->__inet_check_establishedstatic int __inet_check_established(......){....../* Check TIME-WAIT sockets first. */sk_nulls_for_each(sk2, node, &head->twchain) {tw = inet_twsk(sk2);// 如果在time_wait中找到一个match的port,就判断是否可重用if (INET_TW_MATCH(sk2, net, hash, acookie,saddr, daddr, ports, dif)) {if (twsk_unique(sk, sk2, twp))goto unique;elsegoto not_unique;}}......}
而其中的核心函数就是twsk_unique,它的判断逻辑如下:
int tcp_twsk_unique(......){......if (tcptw->tw_ts_recent_stamp && (twp == NULL || (sysctl_tcp_tw_reuse && get_seconds() - tcptw->tw_ts_recent_stamp > 1))) { // 对write_seq设置为snd_nxt+65536+2 // 这样能够确保在数据传输速率<=80Mbit/s的情况下不会被回绕 tp->write_seq = tcptw->tw_snd_nxt + 65535 + 2......return 1;}return 0;}
上面这段代码逻辑如下所示:
在开启了tcp_timestamp以及tcp_tw_reuse的情况下,在Connect搜索port时只要比之前用这个port的TIME_WAIT状态的Socket记录的最近时间戳>1s,就可以重用此port,即将之前的1分钟缩短到1s。同时为了防止潜在的序列号冲突,直接将write_seq加上在65537,这样,在单Socket传输速率小于80Mbit/s的情况下,不会造成序列号重叠(冲突)。同时这个tw_ts_recent_stamp设置的时机如下图所示:
所以如果Socket进入TIME_WAIT状态后,如果一直有对应的包发过来,那么会影响此TIME_WAIT对应的port是否可用的时间。开启了这个参数之后,由于从1min缩短到1s,那么Nginx单台对单Upstream可承受的TPS就从原来的470.5TPS(28232/60)一跃提升为28232TPS,增长了60倍。如果还嫌性能不够,可以配上上面的端口号范围调大以及tcp_max_tw_bucket调小继续提升tps,不过tcp_max_tw_bucket调小可能会有序列号重叠的风险,毕竟Socket不经过2MSL阶段就被重用了。
不要开启tcp_tw_recycle
开启tcp_tw_recyle这个参数会在NAT环境下造成很大的影响,建议不开启。
Nginx upstream改成长连接
事实上,上面的一系列问题都是由于Nginx对Backend是短连接导致。Nginx从 1.1.4 开始,实现了对后端机器的长连接支持功能。在Upstream中这样配置可以开启长连接的功能:
upstream backend { server 127.0.0.1:8080;# It should be particularly noted that the keepalive directive does not limit the total number of connections to upstream servers that an nginx worker process can open. The connections parameter should be set to a number small enough to let upstream servers process new incoming connections as well. keepalive 32; keepalive_timeout 30s; # 设置后端连接的最大idle时间为30s}
这样前端和后端都是长连接,大家又可以愉快的玩耍了。
由此产生的风险点
由于对单个远端ip:port耗尽会导致CPU吃满这种现象。所以在Nginx在配置Upstream时候需要格外小心。假设一种情况,PE扩容了一台Nginx,为防止有问题,就先配一台Backend看看情况,这时候如果量比较大的话击穿临界点就会造成大量报错(而应用本身确毫无压力,毕竟临界值是470.5TPS(28232/60)),甚至在同Nginx上的非此域名的请求也会因为CPU被耗尽而得不到响应。多配几台Backend/开启tcp_tw_reuse或许是不错的选择。
总结
应用再强大也还是承载在内核之上,始终逃不出Linux内核的樊笼。所以对于Linux内核本身参数的调优还是非常有意义的。如果读过一些内核源码,无疑对我们排查线上问题有着很大的助力,同时也能指导我们避过一些坑!
相关文章:
- 上一篇:古诗中描写男生唯美的句子
- 下一篇:言情小说描写脸蛋的优美句子