Yaws не масштабируется на азоте во время выполнения wf:q_pl(KeyList)

Я получил шокирующую ошибку при запуске Nitrogen поверх Yaws при выполнении этой функции азота wf:q_pl(KeyList). Ну, когда длина (KeyList) примерно меньше 40, это работало, но когда длина (KeyList) выросла до больших значений около 200, эта ошибка была выброшена в консоль азота.

([email protected])1> 
=INFO REPORT==== 8-Feb-2014::08:14:25 ===
{error,error,function_clause,
   [{yaws_api,do_parse_spec,
              [{partial,<<"pageContext=FhJWIkuBAhVTtWBwx55fbLljhPYGt-X8C_M2b61YwTPKWz1ZKhzsOTGaRHOLK2T-3f1weOU5CiIqfj98YG1QsFxX2WWfI_fYamdSBPK9RX1_i9t7QzQlFT1iT1R_sj_gLalDJuczluCQfN87a5t_CWLwepgPXyfOiTW1XQDIqcYlIXokbnKiPPvh_lqNvL472LrXC1xweYipFQiDCUgDjd5nFWa8XczD1GZROvDs1zTAeMAPQHQW8IGMHXVWFURWGfXA5OQkRKdY41J7yHUBdhawMLrP_kjeov-4ldWTtDDzqCMI8yJCOFN6Jkkcnk_-TJ-LInGIbxk52h141lCte03BD4NTxNRdRrP0GGz787V8B0YmGTeyYVetuFhpBFZwsMWo5e2nS2_xjLf0ju7W8oPChVwoHjtK9zKfA2FHtofmhflkqWheYwjTe6YnJRZMbzJUebKdvm_YCpCZc0SogQgTLxvazreQNnOWhnb44rBaG2JT1zqjCiOPcXHgjSGafF6UkvLh_TAAyMrZmOhGPjH-NrMPsCr0Grcn8CTU2jnj0Ea2VHWnb031VZwy3DFiGM6cf22f6SRxs7mACftzG8pOTApyBdQhiiR3VB0Kd939lyjmSKVThcR2cGrVmuHktZW8nTWGaaym_RNIehhzWXGjzrbED9c98d63dr-HvJ6S0WCOqRFkniNNd7et0NN0C-8w6Jspj45A1fnLVKpYSs-x7H4VBSfxAcxg8buWYMKOu8klIxLNltEPsOGK90xG6bBrPWwO10SWmr-l-c7lWrDhsxEEEX-tMJ8t82Zwkrh7foRa9LDufgSx1d1hyLVpqQkQxmZMfWpexvJCmb9Yz4hnu5DnBn8Ee08OpYvgdcT7poRYe1vBJ1W1RNphiQUr5mnNjP9CLy70F5VBXqcNmQ2ZezuCKaY9jIkebCu1-vmMpSClkyEaf0j2BtLiFrC2pwn-6y6p_oPrf_77LZSD_zrPLtJv-wS25TahuYEiT7WcF5PU4IinE7kMe4PY79mMprMiGo3FXbsG8G6P4MgaSvCnfdugh_lIrzZ8GPhE51fpAvClKyhWehscEvRt8WknCmD9-PvMBGRRYj1elxLqFSQgsDDKZUnDMCbWY3vYNkKq6MlPbd6tZ1ReBGH1bk4J25v-1jKrhhaaHixjIrVK4TeqLmWuohsK5RtUAVDRhQxjOEOSB4SaPo6RfMoYmNaJWCq2yZKd1dwuNMViP_wU3W8ndcRZ9qfP4d8BQugYCC6QrRHlZn0c4zuLjD6ovw0JQrNka1Aarpx-tJRM2HMxTlJtl4Ibbwmc6H9MEUBa9VFWt2WTsgwppb1u2q1aWjlJRJDO2XgXERDaxXHR-xG0iUUSjvk&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949315.wfid_year=2014&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949361.wfid_term=1&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949403.wfid_stream=p.2+west&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949446.wfid_class=p.2&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949488.wfid_assessment=beginning+of+term&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949539=&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949575.wfid_subject=english&wfid_temp950069.wfid_temp950497.wfid_temp950541.wfid_100000721=45&wfid_temp950069.wfid_temp950600.wfid_temp950642.wfid__100000721=&wfid_temp950702.wfid_temp950911.wfid_temp950958.wfid_100000726=&wfid_temp950702.wfid_temp951013.wfid_temp951056.wfid__100000726=&wfid_temp951111.wfid_temp951326.wfid_temp951665.wfid_100000728=78&wfid_temp951111.wfid_temp951726.wfid_temp951768.wfid__100000728=&wfid_temp951822.wfid_temp952032.wfid_temp952074.wfid_100000729=&wfid_temp951822.wfid_temp952128.wfid_temp952174.wfid__100000729=&wfid_temp952281.wfid_temp952492.wfid_temp952533.wfid_100000730=86&wfid_temp952281.wfid_temp952587.wfid_temp952629.wfid__100000730=&wfid_temp952771.wfid_temp952977.wfid_temp953023.wfid_100000725=&wfid_temp952771.wfid_temp953077.wfid_temp953150.wfid__100000725=&wfid_temp953205.wfid_temp953416.wfid_temp953514.wfid_100000722=87&wfid_temp953205.wfid_temp953573.wfid_temp953616.wfid__100000722=&wfid_temp953670.wfid_temp953912.wfid_temp953953.wfid_100000720=&wfid_temp953670.wfid_temp954007.wfid_temp954053.wfid__100000720=&wfid_temp954107.wfid_temp954372.wfid_temp954428.wfid_100000731=&wfid_temp954107.wfid_temp954483.wfid_temp954524.wfid__100000731=&wfid_temp954583.wfid_temp954824.wfid_temp954866.wfid_100000723=&wfid_temp954583.wfid_temp954919.wfid_temp955741.wfid__100000723=&wfid_temp955811.wfid_temp956044.wfid_temp956090.wfid_100000727=&wfid_temp955811.wfid_temp956155.wfid_temp956202.wfid__100000727=&wfid_temp956265.wfid_temp956497.wfid_temp956547.wfid_100000724=&wfid_temp956265.wfid_temp956610.wfid_temp956655.wfid__100000724=&wfid_temp956719.wfid_temp956954.wfid_temp957000.wfid_100000732=&wfid_temp956719.wfid_temp957064.wfid_temp957110.wfid__100000732=&wfid_temp957180.wfid_temp957418.wfid_temp957465.wfid_100000733=&wfid_temp957180.wfid_temp957527.wfid_temp957579.wfid__100000733=&wfid_temp957638.wfid_temp958889.wfid_temp958936.wfid_100000719=&wfid_temp957638.wfid_temp959002.wfid_temp959049.wfid__100000719=&wfid_temp959113.wfid_temp959344.wfid_temp959396.wfid_100000692=&wfid_temp959113.wfid_temp959462.wfid_temp959508.wfid__100000692=&wfid_temp959586.wfid_temp959894.wfid_temp959941.wfid_100000589=&wfid_temp959586.wfid_temp959997.wfid_temp960039.wfid__100000589=&wfid_temp960095.wfid_temp960306.wfid_temp960348.wfid_100000685=&wfid_temp960095.wfid_temp960408.wfid_temp960450.wfid__100000685=&wfid_temp960661.wfid_temp960872.wfid_temp960913.wfid_100000532=&wfid_temp960661.wfid_temp960967.wfid_temp961014.wfid__100000532=&wfid_temp961069.wfid_temp961279.wfid_temp961321.wfid_100000622=&wfid_temp961069.wfid_temp961375.wfid_temp961416.wfid__100000622=&wfid_temp961475.wfid_temp961742.wfid_temp961789.wfid_100000596=&wfid_temp961475.wfid_temp961845.wfid_temp961887.wfid__100000596=&wfid_temp961941.wfid_temp962152.wfid_temp962194.wfid_100000602=&wfid_temp961941.wfid_temp962254.wfid_temp962296.wfid__100000602=&wfid_temp962361.wfid_temp962720.wfid_temp962763.wfid_100000671=&wfid_temp962361.wfid_temp962819.wfid_temp962865.wfid__100000671=&wfid_temp962920.wfid_temp963131.wfid_temp963172.wfid_100000620=&wfid_temp962920.wfid_temp963226.wfid_temp963267.wfid__100000620=&wfid_temp963325.wfid_temp963537.wfid_temp963584.wfid_100000691=&wfid_temp963325.wfid_temp963638.wfid_temp963751.wfid__100000691=&wfid_temp963808.wfid_temp964022.wfid_temp964065.wfid_100000533=&wfid_temp963808.wfid_temp964125.wfid_temp964169.wfid__100000533=&wfid_temp964225.wfid_temp964439.wfid_temp964481.wfid_100000599=&wfid_temp964225.wfid_temp964537.wfid_temp964724.wfid__100000599=&wfid_temp964779.wfid_temp964991.wfid_temp965032.wfid_100000709=&wfid_temp964779.wfid_temp965086.wfid_temp965129.wfid__100000709=&wfid_temp965188.wfid_temp965395.wfid_temp965442.wfid_100000598=&wfid_temp965188.wfid_temp965497.wfid_temp965538.wfid__100000598=&wfid_temp965592.wfid_temp965872.wfid_temp965914.wfid_100000568=&wfid_temp965592.wfid_temp965974.wfid_temp966017.wfid__100000568=&wfid_temp966072.wfid_temp966284.wfid_temp966326.wfid_100000537=&wfid_temp966072.wfid_temp966381.wfid_temp966427.wfid__100000537=&wfid_temp966483.wfid_temp966843.wfid_temp966885.wfid_100000687=&wfid_temp966483.wfid_temp966941.wfid_temp966983.wfid__100000687=&wfid_temp967043.wfid_temp967268.wfid_temp967318.wfid_100000717=&wfid_temp967043.wfid_temp967373.wfid_temp967415.wfid__100000717=&wfid_temp967471.wfid_temp967768.wfid_temp967811.wfid_100000558=&wfid_temp967471.wfid_temp967872.wfid_temp967915.wfid__100000558=&wfid_temp967971.wfid_temp968183.wfid_temp968225.wfid_100000699=&wfid_temp967971.wfid_temp968281.wfid_temp968329.wfid__100000699=&wfid_temp968385.wfid_temp970042.wfid_temp970116.wfid_100000710=&wfid_temp968385.wfid_temp970187.wfid_temp970233.wfid__100000710=&wfid_temp970296.wfid_temp970535.wfid_temp970650.wfid_100000551=&wfid_temp970296.wfid_temp970716.wfid_temp970766.wfid__100000551=&wfid_temp970825.wfid_temp971071.wfid_temp971117.wfid_100000632=&wfid_temp970825.wfid_temp971180.wfid_temp971231.wfid__100000632=&wfid_temp971290.wfid_temp971529.wfid_temp971576.wfid_100000648=&wfid_temp971290.wfid_temp971634.wfid_temp971680.wfid__100000648=&wfid_temp971743.wfid_temp971975.wfid_temp972021.wfid_100000600=&wfid_temp971743.wfid_temp972091.wfid_temp972138.wfid__100000600=&wfid_temp972196.wfid_temp972437.wfid_temp972483.wfid_100000662=&wfid_temp972196.wfid_temp972545.wfid_temp972597.wfid__100000662=&wfid_temp972658.wfid_temp972893.wfid_temp972939.wfid_100000539=&wfid_temp972658.wfid_temp972997.wfid_temp973043.wfid__100000539=&wfid_temp973106.wfid_temp973343.wfid_temp973389.wfid_100000577=&wfid_temp973106.wfid_temp973456.wfid_temp973502.wfid__100000577=&wfid_temp973562.wfid_temp975361.wfid_temp975410.wfid_100000535=&wfid_temp973562.wfid_temp975478.wfid_temp975526.wfid__100000535=&wfid_temp975589.wfid_temp975831.wfid_temp975879.wfid_100000540=&wfid_temp975589.wfid_temp975944.wfid_temp975996.wfid__100000540=&wfid_temp976057.wfid_temp976296.wfid_temp976347.wfid_100000688=&wfid_temp976057.wfid_temp976407.wfid_temp976458.wfid__100000688=&wfid_temp976522.wfid_temp976905.wfid_temp976946.wfid_100000654=&wfid_temp976522.wfid_temp977000.wfid_temp977042.wfid__100000654=&wfid_temp977101.wfid_temp977307.wfid_temp977353.wfid_100000701=&wfid_temp977101.wfid_temp977407.wfid_temp977449.wfid__100000701=&wfid_temp977503.wfid_temp977713.wfid_temp977754.wfid_100000636=&wfid_temp977503.wfid_temp977812.wfid_temp977854.wfid__100000636=&wfid_temp978142.wfid_temp978372.wfid_temp978415.wfid_100000626=&wfid_temp978142.wfid_temp978470.wfid_temp978517.wfid__100000626=&wfid_temp978572.wfid_temp978812.wfid_temp978854.wfid_100000669=&wfid_temp978572.wfid_temp978909.wfid_temp978951.wfid__100000669=&wfid_temp979011.wfid_temp979220.wfid_temp979268.wfid_100000550=&wfid_temp979011.wfid_temp979323.wfid_temp979366.wfid__100000550=&wfid_temp979420.wfid_temp979633.wfid_temp979675.wfid_100000683=&wfid_temp979420.wfid_temp979734.wfid_temp979776.wfid__100000683=&wfid_temp979945.wfid_temp980160.wfid_temp980202.wfid_100000640=&wfid_temp979945.wfid_temp980262.wfid_temp980305.wfid__100000640=&wfid_temp980360.wfid_temp980572.wfid_temp980614.wfid_100000656=&wfid_temp980360.wfid_temp980669.wfid_temp980719.wfid__100000656=&wfid_temp980776.wfid_temp980996.wfid_temp981039.wfid_100000675=&wfid_temp980776.wfid_temp981095.wfid_temp981137.wfid__100000675=&wfid_temp981192.wfid_temp981590.wfid_temp981637.wfid_100000572=&wfid_temp981192.wfid_temp981691.wfid_temp981733.wfid__100000572=&wfid_temp981787.wfid_temp982000.wfid_temp982042.wfid_100000647=&wfid_temp981787.wfid_temp982101.wfid_temp982143.wfid__100000647=&wfid_temp982202.wfid_temp982435.wfid_temp982476.wfid_100000556=&wfid_temp982202.wfid_temp982531.wfid_temp982576.wfid__100000556=&wfid_temp982631.wfid_temp982888.wfid_temp982930.wfid_100000582=&wfid_temp982631.wfid_temp982985.wfid_temp983027.wfid__100000582=&wfid_temp983081.wfid_temp983400.wfid_temp983442.wfid_100000695=&wfid_temp983081.wfid_temp983501.wfid_temp983544.wfid__100000695=&wfid_temp983599.wfid_temp983810.wfid_temp983853.wfid_100000653=&wfid_temp983599.wfid_temp983908.wfid_temp983954.wfid__100000653=&wfid_temp984009.wfid_temp984223.wfid_temp984266.wfid_100000542=&wfid_temp984009.wfid_temp984321.wfid_temp984363.wfid__100000542=&wfid_temp984418.wfid_temp984820.wfid_temp984867.wfid_100">>},
               nokey,[],key],
              [{file,"src/yaws_api.erl"},{line,499}]},
    {wf_core,deserialize_context,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,115}]},
    {wf_core,run_catched,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,48}]},
    {wf_core,run,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,19}]},
    {yaws_server,deliver_dyn_part,8,
                 [{file,"src/yaws_server.erl"},{line,2801}]},
    {yaws_server,aloop,4,[{file,"src/yaws_server.erl"},{line,1215}]},
    {yaws_server,acceptor0,2,[{file,"src/yaws_server.erl"},{line,1052}]},
    {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

=INFO REPORT==== 8-Feb-2014::08:14:25 ===
{error,error,
   {case_clause,undefined},
   [{wf_core,finish_dynamic_request,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,87}]},
    {wf_core,run_crash,4,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,37}]},
    {yaws_server,deliver_dyn_part,8,
                 [{file,"src/yaws_server.erl"},{line,2801}]},
    {yaws_server,aloop,4,[{file,"src/yaws_server.erl"},{line,1215}]},
    {yaws_server,acceptor0,2,[{file,"src/yaws_server.erl"},{line,1052}]},
    {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

=ERROR REPORT==== 8-Feb-2014::08:14:25 ===
Unhandled reply fr. do_recv() {error,emsgsize}

Я думаю, что это ошибка, потому что, когда я перешел на ковбойский веб-сервер, он отлично работал, даже когда в wf:q_pl(KeyList), length(KeyList)> 400


person Vianney Sserwanga    schedule 23.02.2014    source источник
comment
Было бы неплохо, если бы вы указали подробности о том, как воспроизвести проблему.   -  person Steve Vinoski    schedule 23.02.2014


Ответы (1)


Эта проблема вызвана тем, что Yaws имеет встроенный лимит размера POST, по умолчанию равный 10240 байтам. Я смог продублировать проблему, которую вы видите, отправив данные размером более 10240 байт. (Кстати, в следующий раз, пожалуйста, предоставьте более подробную информацию о том, как воспроизвести проблему, с которой вы столкнулись.)

Чтобы обойти эту проблему, вы можете изменить конфигурацию Yaws, работающую под Nitrogen. Вам не нужно останавливать Nitrogen или Yaws, чтобы внести это изменение. Сначала отредактируйте файл rel/nitrogen/etc/yaws.conf, добавив в блок <server> следующее:

partial_post_size = 2048000

Это увеличивает ограничение размера POST до 2048000 байт. Не стесняйтесь изменять значение по своему усмотрению, но просто убедитесь, что оно достаточно велико, чтобы обработать самый большой POST, отправляемый вашими приложениями. Вы также можете установить значение слова nolimit, чтобы полностью снять ограничение, но это плохая идея для рабочего сервера, поскольку это позволит злоумышленнику вывести сервер из строя.

После сохранения файла rel/nitrogen/etc/yaws.conf просто запустите Nitrogen, если он не запущен, или, если он запущен, выполните следующую команду:

rel/nitrogen/lib/yaws/bin/yaws --hup

Это сигнализирует работающему серверу Yaws о необходимости перезагрузки конфигурации.

Я считаю, что полное решение этой проблемы требует изменений в мосте между Nitrogen и Yaws.

Обновление: если вы получаете азот из его репозитория github, он имеет больший параметр для параметра конфигурации Yaws partial_post_size как из коммит 8bf48378.

person Steve Vinoski    schedule 23.02.2014