Just algorithm!

ป้องกัน Connection Overload ใน Azure

ตอนนี้ web ของคุณ หรือ web-api ของคุณมีคนใช้เยอะเกินไปหรือเปล่าครับ? ถ้า web ของคุณมีคนใช้จน CPU เต็ม 100% แล้วคุณยังฝืนปล่อยให้มีคนมาเรียกอีก ระบบคุณอาจจะค้างไปเลยก็ได้ คุณสามารถปฏิเสธ request ใหม่ ๆ ให้ขึ้น 503 service unavailable ซึ่งเป็นการป้องกันไม่ให้ Server คุณล่มได้

ไปที่ Config ของ WebRole (ServiceDefinition.csdef) เพิ่มบรรทัดนี้

เช่น



ที่ Project Web แล้วเพิ่ม reference Microsoft.Web.Administration.dll (อยู่ใน %windir%system32inetsrv)

และก็เพิ่ม WebRole.cs (ถ้ายังไม่มี) เพิ่มคำสั่งใน OnStart ดังนี้


public class WebRole : RoleEntryPoint

{

  public override bool OnStart()

  {

    using (var mgr = new ServerManager())

    { 

      mgr.Sites[0].Limits.MaxConnections = 5000;

      mgr.CommitChanges();

    }

    return true;

  }

}


ตัวเลข 5000 คือจำนวน Connection สูงสุด ถ้าเกินกว่านี้จะขึ้น 503 Service Unavailable ปรับเป็นตัวเลขที่คุณต้องการได้เลยครับ




 

Create Date : 03 ธันวาคม 2556    
Last Update : 10 พฤศจิกายน 2557 21:00:22 น.
Counter : 481 Pageviews.  

Sql - สร้าง Random number ใน Sql

ปกติเราใช้ Function RAND() เพื่อสร้าง Random number
แต่ RAND() มีปัญหาอย่างหนึ่ง คือ มันไม่สามารถสร้าง Random number ในทุก ๆ บรรทัดของ Query ได้
เช่น

  1. select RAND()
  2. from Table1
จะได้ผลลัพธ์เป็น
  1. ----------------------
  2. 0.743651588693238
  3. 0.743651588693238
  4. 0.743651588693238
  5. 0.743651588693238
  6. 0.743651588693238
จะเห็นว่าตัวเลขในแต่ละบรรทัดเหมือนกันหมด

วิธีแก้คือให้ใช้ Function NEWID() ครับ
ซึ่ง NEWID จะได้ค่าที่ Random จริงแต่ต้องแปลงเป็นตัวเลขก่อน
เขียนอย่างนี้ครับ
  1. select ABS(CONVERT(binary(4),NEWID()) % 1000)
  2. from Table1
แทนค่า 1000 ด้วย Maximum Number ที่เราต้องการ
ซึ่งถ้าใส่ 1000 จะได้ผลลัพธ์ตั้งแต่ 0-999

ผลลัพธ์จากการ Run เป็นดังนี้ครับ
  1. -----------
  2. 744
  3. 721
  4. 297
  5. 74
  6. 685




 

Create Date : 24 กรกฎาคม 2553    
Last Update : 10 พฤศจิกายน 2557 21:02:44 น.
Counter : 594 Pageviews.  

.NET - วิธี Sign Assembly ที่เราเข้ารหัสไว้

ปกติเรา Sign Assembly เพื่อประทับตรากันคนมาแก้ไข Assembly ของเรา
แต่ถ้าเราทำการ Obfuscate เพื่อป้องกันคนมาแอบอ่าน Code ของเรา
กลายเป็นว่า Assembly ที่เรา Sign นั้นหลุด
ทำให้เอา Assembly นั้นไป Run ไม่ได้

วิธีแก้คือ หลังจาก Obfuscate แล้ว ก็ทำการ Sign อีกครั้ง
โดยใช้คำสั่ง


sn.exe -R YourAssembly.dll PublicPrivateKeyFile.snk




 

Create Date : 20 มิถุนายน 2553    
Last Update : 20 มิถุนายน 2553 23:02:34 น.
Counter : 563 Pageviews.  

Sql - การ Rename Sql Server

เมื่อเร็ว ๆ นี้ มีคนไป Uninstall แล้วก็ Install Sql Server ใหม่ (ในเครื่อง Production)
ซึ่งในนั้นก็มี Database ของ Program ผมรวมอยู่ด้วย
ทำให้ผมต้องไป Attach แล้วก็ Test Program ใหม่

สืบไปสืบมา ได้ความว่ามีคนไปเปลี่ยนชื่อเครื่อง Server (ด้วยความจำเป็นบางอย่าง)
ประเด็นคือ เมื่อใดก็ตามที่เปลี่ยนชื่อเครื่อง ก็ควรไป Rename Sql Server ด้วย
เพราะ Feature บางอย่างมันอ้างถึง ServerName ของ Sql Server ไม่ใช่ชื่อเครื่อง
แต่พี่แกเล่นแก้โดยการ Uninstall ใหม่ซะเลย Smiley

เลยเอา Script สำหรับเปลี่ยนชื่อ ServerName มาฝากกัน

sp_dropserver 'old_name'
GO
sp_addserver 'new_name', LOCAL
GO

เสร็จแล้วก็ Restart Sql Server

ถ้าต้องการเช็ค ServerName ให้ใช้คำสั่งนี้

SELECT @@SERVERNAME




 

Create Date : 13 มิถุนายน 2553    
Last Update : 10 พฤศจิกายน 2557 21:02:59 น.
Counter : 485 Pageviews.  

.NET - วิธีการป้องกันการ Add Event ซ้ำ

มีเพื่อนผมถามมา
เราจะรู้ได้ยังไงว่า object นั้นถูก Add Event Handler ไปแล้ว?
คำตอบคือ ไม่รู้ครับ (แป่ว!!) Smiley

แต่ก็มีวิธีป้องกันการ Add Event Handler ซ้ำได้ครับ
วิธีการก็ง่าย ๆ
Remove Event Handler ไปก่อน
แล้วค่อย Add ไปใหม่ อย่างนี้ครับ

button1.Click -= button1_Click;
button1.Click += button1_Click;




 

Create Date : 05 มิถุนายน 2553    
Last Update : 5 มิถุนายน 2553 20:49:59 น.
Counter : 424 Pageviews.  

1  2  

chaowman
Location :
กรุงเทพฯ Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]





New Comments
Group Blog
 
All Blogs
 
Friends' blogs
[Add chaowman's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.