Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > Run schedule แล้ว mssql ตาย ค่ะ คือปัญหามันเกิดจากโปรแกรมตัวเนี้ยต้องรันอัพเดตข้อมูลทุกวัน



 

Run schedule แล้ว mssql ตาย ค่ะ คือปัญหามันเกิดจากโปรแกรมตัวเนี้ยต้องรันอัพเดตข้อมูลทุกวัน

 



Topic : 044536



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์




คือปัญหามันเกิดจากโปรแกรมตัวเนี้ยต้องรันอัพเดตข้อมูลทุกวัน วันนึกก็ประมาณ 7-8 ตาราง รวมๆ 7-8 ตารางนี้ก็ประมาณ 5 - 6 แสนเรคคอร์ด โดยจะมีการ Delete / Insert / Update ค่ะ
วันแรกที่รันโอเคเปิดโปรแกรมดึงข้อมูลจาก mssql ได้ตามปกติ
แต่พอวันที่ 2 โปรแกรมจะติดต่อกับฐานข้อมูลไม่ได้เลยค่ะ server ตายไปเลย ไม่ทราบว่าใครพอจะทราบบ้างคะ ว่ามันเป็นเพราะอะไร รีสตาร์ท mssql ก็ไม่ได้ ต้องรีเครื่อง server อย่างเดียวเลยค่ะ ถึงจะหาย
เสริมอีกนิด. Schedule ตัวเนี้ยจะดึงผ่าน IE ซึ่งก็คือหน้าเพจ .aspx ที่ใส่คำสั่ง sql ไว้ค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-06-25 18:29:44 By : somooo View : 2069 Reply : 14
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ใช้แบบ connection.open() อยู่ละสิ

เปลี่ยนมาใช้แบบ connectionless (data adapter) ดีกว่า sql server จะได้ไม่ต้องทำงานหนัก

แต่จะไปหนัก memory ของ web server แทน (ถ้า RAM เยอะก็ไม่เป็นไร)






Date : 2010-06-25 18:35:29 By : tungman
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เพื่อลดภาระของ server ไม่ว่าจะทำด้วยวิธีใด
จากที่เคย handle ข้อมูลปริมาณเยอะๆนะคะ

1. ค่อยๆตัด query ออกมาทำทีละส่วน แล้วค่อยดำเนินการเช่น
update ทีละ 500 ทำหลายๆครั้งเอา ซึ่งก็ใส่ loop เข้าไป

2. เพื่อการเข้าถึงรวดเร็ว index ขาดไม่ได้เลยค่ะ
Date : 2010-06-25 20:04:15 By : blurEyes
 

 

No. 3



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


คือใช้ Procedure ในการ Insert ข้อมูลค่ะ แล้วให้ .Net เรียก Procedure ขึ้นมาทำงานอีกทีนึง
คือที่สังเกตุมาเรื่อยๆ MSSQL มันไม่คืน RAM ค่ะ พอสั่ง stop mssqlserver ผ่าน cmd ค่า ram ที่ใช้อยู่ก็ลดนะค่ะ
แล้วอย่างนี้จะต้องใช้วิธีไหนที่เมื่อมันทำงานเรียบร้อยแล้วให้คือ memory ออกมกให้หมด
รบกวนหน่อยค่ะ
Date : 2010-08-02 11:10:54 By : somooo
 


 

No. 4



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ลองให้ method dispose() ดู

ให้ dispose มันทุกๆ object ที่เกี่ยวข้องเลย
Date : 2010-08-02 12:04:00 By : tungman
 


 

No. 5



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณคุณ tungman คะ แต่ว่าเกิดปัญหานิดหน่อยค่ะ คือ
dispose() เนี่ยยังไม่เคยใช้เลยค่ะ แต่จากที่หาๆดูแล้ว หลักการคือ
สมมุตเรามี sub () อยู่ 3 sub เราก็ต้อง dispose() 3 ครั้ง ตรงบันทัดสุดท้ายของแต่ละ sub (กรณีที่ไม่ได้ดัก error นะค่ะ)

ถ้าใช่ มันมีปัญหาค่ะ มัน error The ConnectionString property has not been initialized
ปล.คือในส่วนของ sub พวกนี้มันจะทำงานต่อกันนะค่ะ พอเอา dispose() อันแรกออกมันก็ใช้งานต่อได้ค่ะ แต่ว่ามันจะคืนเมมไม่หมดค่ะ

หรือถ้าไม่ใช่ ตรงทำอย่างไรคะ รบกวนหน่อยค่ะ
Date : 2010-08-02 14:39:11 By : somooo
 


 

No. 6



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Quote:
ถ้าใช่ มันมีปัญหาค่ะ มัน error The ConnectionString property has not been initialized


- คือมันยังใช้งานไม่เสร็จ แต่คุณไป dispose มันครับ มันเลยหาค่าไม่เจอ

ปกติผมจะใช้ dispose กับ object ที่ใช้งานเสร็จแล้วน่ะครับ

เช่นพวกที่ประกาศเป็นแบบ global นี่ตัวดีเลย เรียกใช้เสร็จไม่ยอมคืน memory

หลังๆ เลยพยายามไม่ประกาศแบบ global หันไปใช้ที่ทำงานเสร็จภายใน method

เลย แล้วรับเฉพาะ output มาเท่านั้นพอ เพราะตัวแปรใน method จะมีอายุอยู่ใน

method นั้นๆ เท่านั้น พอใช้เสร็จ framework ก็จัดการคืน memory ให้เอง

ถ้าจะ dispose ผมจะ dispose object พวก datatable dataadapter datareader sqlcommand sqlconnection

แต่ต้องจัดการดีๆ นะ ต้องดูว่าไม่ใช้งานแล้วจริงๆ ไม่งั้น error แต่แนะนำเขียนเป็น method หรือ

สร้างเป็น class ไว้จัดการกับฐานข้อมูลแยกไปต่างหากเลยดีกว่า ให้มันอยู่เป็นก้อนเดียวกัน

อย่ามาปนๆ กับส่วน logic เลย จะได้ง่ายในการจัดการเรื่อง memory จะคืน memoey

ก็สั่ง dispose object นั้นก็เสร็จแล้ว
Date : 2010-08-02 14:56:00 By : tungman
 


 

No. 7



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ทำตามที่คุณ tungman บอกแล้วค่ะ ไปสร้างซับย่อยให้มัน dispose ก็ทำงานได้ตามปกติค่ะ แต่ว่ามันไม่คืน memory นี่สิค่ะ
คือเข้าใจว่า mssql server เนี่ยมันจะดึง ram เข้ามาเยอะๆเพื่อให้มันรันได้ไวขึ้น พอตอนรันมันดึงขึ้นไป 1 GB พองานเสร็จเรียบร้อย กลับไม่คืน memory ให้เลย นี่ไปเซ็ทตรง ค่า max memory ตรง properties ของ server เป็น 512 ไว้แล้วนะค่ะ ไม่รู้เลยว่าต้องทำอย่างไร ตอนนี้ทำได้แค่ restart msssqlserver แต่มันไม่ใช่วิธีแก้ปัญหาอะค่ะ
ต้องทำอย่างไรดีคะ
Date : 2010-08-02 16:17:51 By : somooo
 


 

No. 8



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


และอีกอย่างนึงที่สังเกตุเห็นนะค่ะ คือขอบอกก่อนว่าการทำงานของการ Insert ข้อมูลคือ
1. ใช้ View ดึงข้อมูลมาจาก DB ตัวที่ 2
2. ใช้ Store procedure insert data เข้า DB 1 โดยการ select จาก view
3. ใช้ .net เรียก SP ทำงาน

คือที่ลองดูแค่เข้าไปเปิด Views ที่เขียนดึงข้อมูลมาจาก DB อีกตัวนึง มันก็กิน memory เยอะมากๆ เลยค่ะ (เอ๊ะ! หรือปัญหาจะเกิดจาก Views คะ) กิน mem เยอะไม่ว่า แต่ไม่ยอมคืนนี่ไม่ไหวนะค่ะ

ใครทราบรบกวนหน่อยนะค่ะ
Date : 2010-08-02 16:39:54 By : somooo
 


 

No. 9



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


แสดงว่าปัญหามันไปติดที่ sql sever เหรอครับ

คัมภีย์ sql ก็ไม่เห็นมาตอบตั้งหลายวันแล้วด้วย สงสัยสอบอยู่
Date : 2010-08-02 17:39:47 By : tungman
 


 

No. 10



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


คิดว่าก็น่าจะเป็นอย่างนั้นนะค่ะ เพราะจากที่ลองหาๆดู เขาบอกว่า sql 2000 มันไม่คืน memory
ถ้าเป็นอย่างนั้นจริง ตายแน่เลยค่ะ เพราะมันอยู่บนเครื่อง server ด้วย ไม่คืนบ่อยๆเข้าสะสม เครื่องเจ๊งอีก ....

ถ้ามีใครพอทราบขอคำชี้แนะหน่อยนะค่ะ
Date : 2010-08-02 17:52:25 By : somooo
 


 

No. 11



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้เริ่มมีแนวคิดว่าจะเปลี่ยนจาก MSSQL 2000 เป็น MSSQL 2005 คิดว่าจะแก้ปัญหาได้บ้างมั้ยคะ
ซึ่งใครเคยทำแบบนี้บ้าง มันต้องระวังเรื่องอะไรบ้าง ต้องแก้ส่วนไหน ยังไง ขอความคิดเห็นหน่อยนะค่ะ
Date : 2010-08-03 09:31:36 By : somooo
 


 

No. 12



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


น่าจะยังเป็นปัญหาอยู่ค่ะ
จิงๆที่คุนส้มโอเจอ ถือเป็นเรื่องปกติของ mssql นะคะ
เพราะตัว mssql จะถือว่า memory เป็น primary cache โดยจะพยายามดึงเอา memory มาใช้ให้มากที่สุด
ซึ่งเราก้อตั้งได้ว่าจะ ให้ mssql ใช้ memory ไปเท่าไหร่ ทีนี้ปัญหามักจะเกิดเมื่อมีกระบวนการกับ record จำนวนมากๆ
หลังจากการใช้งานแล้ว mssql จะยังยึด memory เอาไว้ ซึ่ง mssql จะคืน memory ให้เมื่อ os มีการร้องขอ
แต่มักจะพบว่ามันนานมาก เป็น ชม. หรือวันกว่าจะคืนให้ << อันนี้อ่านจาก trouble shooting ของ mssql นานมากละค่ะ
ทางออกมีหลายทางเริ่มตั้งแต่ ติดโปรแกรมตระกูล memory recovery เพื่อ force ให้คืน mem แต่มีข้อเสียคือ
ต้องหา version ที่ทำงนกับ server ซึงก็แพงอยู่ค่ะ

หรือที่แนะนำไปแล้วพยายามตัด operation ของเป็น ส่วนย่อยๆ ทำน้อยๆประมาณ 1000 - 5000 record แล้ววนลูปไปเรื่อยๆ
เพื่อไม่ให้ mssql ใช้ memory มากเกินไป ทั้งนี้เป็น tecnic ที่สังเกตุจากโปรแกรม convert database
ตังนึงที่ convert record จำนวนมากๆทั้งๆที่โปนแกรมอื่น knock ไปแล้วอะค่ะ

ไม่รุจะช่วยได้มากน้อยยังไงนะคะแต่ทุกวันก้อใช้วิธีนี้อยู่ค่ะ
Date : 2010-08-04 20:11:48 By : blurEyes
 


 

No. 13



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

อัพเซอร์ฟเวอร์ดีกว่ามั้ง

ไม่ก็ redesign db/query
Date : 2010-08-04 20:27:08 By : pjgunner
 


 

No. 14



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้ไป dispose แล้วก็ nothing แล้วก็ใช้ using ด้วย ใช้ให้หมดเลยค่ะ 555 และก็ไปเซ็ทค่า max ให้มันไม่ต้องเยอะมากสักสามร้อย ก็พอทนค่ะ

ขอบคุณทุกๆคำตอบเลยนะค่ะ
Date : 2010-08-05 21:27:59 By : somooo
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Run schedule แล้ว mssql ตาย ค่ะ คือปัญหามันเกิดจากโปรแกรมตัวเนี้ยต้องรันอัพเดตข้อมูลทุกวัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่