16 กรกฎาคม 2562

5 วิธีแก้ไขปัญหา Not Responding ที่ต้นเหตุ

Not responding เป็นปัญหาโลกแตกที่หลายคนเจอ พอเด้งขึ้นมาแต่ละทีก็ทำใจหายไปหมด ยิ่งถ้ายังไม่ได้กดบันทึกแล้วความน่ากลัวจะเพิ่มขึ้นมหาศาล เล่นเกมมาตั้งนาน ปั่นงานมาเกือบเสร็จ ต้องเริ่มต้นใหม่เลยเหรอเนี่ย!

เจ้า not responding นี่เป็นอาการครอบจักรวาลเสียด้วย ถ้าเปรียบเทียบกับมนุษย์แล้ว not responding ก็คืออาการปวดหัวนั่นล่ะ เป็นอาการเบื้องต้นที่เกิดได้จากหลายสาเหตุมาก วิธีแก้ไขปัญหา not responding มี 2 ทาง วิธีแรกคือแก้ไขปัญหาตามอาการ รักษาตามที่เห็นภายนอก และอีกวิธีคือแก้ไขปัญหาที่ต้นเหตุ ซึ่งยากกว่ากันเยอะและอาจแก้ด้วยตัวเองไม่ได้เลย

CAUSE: โปรแกรมยังทำงานไม่เสร็จ

สาเหตุปลายทางของอาการ not responding คือโปรแกรมนั้นยังทำงานไม่เสร็จ ไม่ว่าจะทำงานไม่เสร็จด้วยสาเหตุใดก็ตาม ถ้าโปรแกรมยังทำงานไม่เสร็จและเราพยายามให้โปรแกรมนั้นทำงานเพิ่ม (แม้แต่การคลิกบนโปรแกรมนั้นเฉย ๆ ก็ถือว่าเป็นการทำงานเพิ่มด้วย เพราะโปรแกรมต้องทำงานว่าจะตอบสนองกับการคลิกอย่างไร) โปรแกรมจะไม่ตอบสนองต่อคำสั่งใหม่ของเรา เพราะการทำงานเก่ายังไม่เสร็จ อธิบายง่าย ๆ คือโปรแกรมแบบนี้ทำงานได้ทีละอย่างเท่านั้น ถ้ากำลังทำงานอยู่ก็ไม่ว่างตอบสนองกับเรา พอโปรแกรมไม่สามารถตอบสนองกับเราด้วยตัวเองได้ ระบบปฏิบัติการจะตอบสนองแทนว่า "โปรแกรมไม่ตอบสนอง (Not Responding)" ระบบปฏิบัติการเองก็ไม่รู้เหมือนกันว่าโปรแกรมกำลังทำงานอะไรอยู่ จึงไม่สามารถให้รายละเอียดได้

โปรแกรมทำงานไม่เสร็จเป็นแค่สาเหตุปลายทางเท่านั้น ถ้าจะแก้ไขปัญหา not responding จริง ๆ ต้องแก้ไขที่สาเหตุต้นทาง อะไรที่ทำให้โปรแกรมทำงานไม่เสร็จก็แก้ที่ตรงนั้น สาเหตุต้นทางของปัญหานี้มีมากมาย ผู้เขียนรวบรวมสาเหตุต้นทางและวิธีแก้ไขมาไว้ในบทความนี้


1. Infinity Loop: เขียนโปรแกรมอะไรเนี่ย!

ส่วนใหญ่พบใน: คนที่เขียนโปรแกรมเอง

ปัญหานี้พบได้ในโปรแกรมทำงานวนไปวนมาโดยไม่มีทางออกจากการวน การเขียนโปรแกรมแแบบนี้เรียกว่า infinity loop หรือการวนไม่มีที่สิ้นสุด ในเมื่อเขียนโปรแกรมให้ทำงานไม่มีวันจบเอง โปรแกรมจะหยุดทำงานแล้วตอบสนองเราได้อย่างไร โชคดีที่ปัญหานี้เกิดจากตัวโปรแกรมเมอร์เอง แค่แก้ไขโค้ดก็หมดปัญหาแล้ว ส่วนโปรแกรมที่วางขายหรือเผยแพร่อยู่ทั่วไปผ่านการทดสอบแล้ว ไม่ค่อยเกิดเรื่อง infinity loop หรอก อุ่นใจได้! ปัญหานี้พบในคนที่เขียนโปรแกรมเองมากกว่า

วิธีแก้ไข: เพิ่มเงื่อนไขให้ออกจากการวน


2. Missing File: ขาดตกบกพร่อง

ส่วนใหญ่พบใน: โปรแกรมเก่า, โปรแกรมเถื่อน, คอมพิวเตอร์ที่เพิ่งลบมัลแวร์ (หรือไวรัส)

บางโปรแกรมต้องเรียกใช้ไฟล์, library, หรือ driver เช่น เกมที่ต้องการ DirectX 11 เพื่อแสดงภาพ ถ้าไม่มีไฟล์เหล่านั้นโปรแกรมจะไม่สามารถทำงานได้ ปกติมักแสดงข้อความ error และปิดตัวลง แต่ก็มีบางกรณีที่โปรแกรมพบไฟล์แต่เรียกใช้งานได้ไม่สมบูรณ์, เวอร์ชันไม่ตรงกัน, หรือสร้างโปรแกรมมาไม่ดี โปรแกรมจึงไม่ได้แสดงข้อความ error แต่กลับค้นหาไฟล์ไปเรื่อย ๆ ไม่ยอมหยุดแทน

อีกกรณีคือโปรแกรมป้องกันมัลแวร์ (หรือโปรแกรมป้องกันไวรัส) เข้าใจว่าไฟล์เหล่านั้นเป็นมัลแวร์ (หรือไวรัส) เมื่อโปรแกรมป้องกันมัลแวร์แจ้งว่าคอมพิวเตอร์มีมัลแวร์ (หรือไวรัส) ให้เราตรวจสอบไฟล์ต้องสงสัยนั้นก่อนกำจัดไฟล์ บางทีไฟล์ต้องสงสัยอาจไม่ใช่มัลแวร์จริง ๆ ก็ได้ โปรแกรมแค่ตรวจผิด

วิธีแก้ไข: ถ้ารู้ว่ามีปัญหาที่ไฟล์ใดก็ให้ดาวน์โหลดไฟล์นั้นมาแทน, ถอนการติดตั้งแล้วติดตั้งโปรแกรมอีกรอบ


3. Bottleneck: คอขวดฮาร์ดแวร์

ส่วนใหญ่พบใน: คอมพิวเตอร์ที่มีฮาร์ดแวร์ไม่สอดคล้องกัน

คอมพิวเตอร์ไม่ใช่ว่าจะยัดฮาร์ดแวร์แรง ๆ เข้าไปแล้วจะทำงานได้เร็วขึ้นเสมอไป ฮาร์ดแวร์แต่ละส่วนต้องทำงานร่วมกัน ดังนั้นต้องมีสเปกที่เข้ากันด้วยจึงจะใช้งานได้เต็มประสิทธิภาพ ถ้าฮาร์ดแวร์ทำงานได้ไม่เต็มประสิทธิภาพเพราะไม่สอดคล้องกันจะเรียกว่า bottleneck หรือคอขวด คอขวดที่พบคือความเร็วของ CPU, RAM, mainboard, และ GPU ไม่สอดคล้องกัน ถ้าความเร็วในแต่ละส่วนไม่เท่ากัน ความเร็วสุดท้ายจะเท่ากับความเร็วที่ช้าที่สุด

สำหรับปัญหานี้สามารถเกิดขึ้นได้กับหลายโปรแกรมบนคอมพิวเตอร์เครื่องนั้น เพราะต้นเหตุของการทำงานช้าคือตัวคอมพิวเตอร์เอง ถ้าจะอัพสเปกคอมพิวเตอร์หรือซื้อเครื่องใหม่ต้องเลือกฮาร์ดแวร์ที่สอดคล้องกัน เพื่อจะได้ดึงประสิทธิภาพของฮาร์ดแวร์ได้อย่างเต็มที่ ถ้าไม่อยากเสียเงินอัพสเปกก็อดทนรอให้โปรแกรมทำงานจนเสร็จ

วิธีแก้ไข: ใช้ฮาร์ดแวร์ที่มีสเปกสอดคล้องกัน


4. Single Tasking: ทำได้ทีละอย่างเองเหรอ?

ส่วนใหญ่พบใน: โปรแกรมที่เป็น single tasking

โปรแกรมที่เป็น single tasking ไม่สามารถทำงานหลายอย่างพร้อมกันได้ ต้องรอให้การทำงานเก่าจบก่อนจึงจะทำงานใหม่ได้ ถ้าเจอปัญหานี้ผู้พัฒนาโปรแกรมต้องแก้โค้ดของโปรแกรมให้เป็น multitasking สำหรับโปรแกรมเมอร์ที่ต้องการสร้างโปรแกรมใหม่ที่ทำงานเยอะ ผู้เขียนแนะนำให้สร้างเป็นโปรแกรมแบบ multitasking เผื่อไปเลย โปรแกรมจะได้ทำงานหลายอย่างได้พร้อมกัน ส่วนโปรแกรมวางขายทั่วไปเราเข้าไปแก้ไขโค้ดไม่ได้ ก็ต้องทำใจอดทนรอให้โปรแกรมทำงานจนเสร็จ ถึงแม้โปรแกรมจะไม่ตอบสนองแต่ก็ยังทำงานได้ตามปกติ

วิธีแก้ไข: ถ้าเป็นโปรแกรมที่สร้างเองให้แก้โค้ดเป็น multitasking, ถ้าเป็นโปรแกรมที่ไม่ได้สร้างเองก็อดทนรอให้โปรแกรมทำงานจนเสร็จ


5. Wait: ก็แค่ทำงานนานเอง

ส่วนใหญ่พบใน: โปรแกรมที่ทำงานหนัก, คอมพิวเตอร์ที่มีสเปกต่ำ

บางโปรแกรมต้องทำงานหนักอยู่แล้ว เช่น โปรแกรมตัดต่อวิดีโอ, โปรแกรมบีบอัดไฟล์, หรือเกมที่มีสเปกสูง ยิ่งถ้าใช้คอมพิวเตอร์ที่มี CPU และ GPU สเปกต่ำก็ยิ่งช้าเข้าไปอีก ถ้าเข้าข่ายกรณีนี้ก็แค่อดทนรอ ปล่อยให้โปรแกรมทำงานจนเสร็จแค่นั้นเอง ไม่มีอะไรต้องกังวล

วิธีแก้ไข: คลิก Wait for the program to respond และอดทนรอ!


สรุปและส่งท้าย

สาเหตุที่กล่าวมาเป็นสาเหตุต้นทางของปัญหา not responding ที่พบเจอบ่อย ยังมีสาเหตุอื่นนอกจากนี้อีก เนื้อหาที่กล่าวมาข้างต้นก็ค่อนข้างเป็นเชิงวิชาการพอควร และในโลกความจริงแล้วเราแทบไม่รู้เลยว่าสาเหตุจริง ๆ เกิดจากอะไรกันแน่ (ถ้าเขียนโปรแกรมขึ้นเองยังพอเดาสาเหตุตามเนื้อหาข้างต้นได้บ้าง)

ถ้าให้สรุปวิธีแก้ง่าย ๆ ส่วนใหญ่ที่หลายคนพบมักเป็นไฟล์มีปัญหา (ข้อที่ 2) และโปรแกรมทำงานหนักอยู่แล้ว (ข้อที่ 5) ขั้นตอนแรกที่แนะนำคือให้คลิก Wait for the program to respond และอดทนรอ ถ้ารอหลายนาทีแล้วโปรแกรมยังไม่ตอบสนอง และทุกครั้งโปรแกรมนี้จะมีอาการ not responding ในจุดเดิมเสมอ ลองถอนการติดตั้งโปรแกรมนั้นและติดตั้งโปรแกรมเวอร์ชันล่าสุดลงไป

ถ้ายังไม่ได้ผลอีกก็ต้องทำใจแล้วล่ะ Not responding เป็นปัญหาโลกแตกครอบจักรวาลจริง ๆ การตามหาสาเหตุต้นทางนั้นยากมาก บางครั้งแม้จะรู้สาเหตุต้นทางแล้วแต่ก็ทำอะไรได้ไม่มากอยู่ดี เช่น ปัญหาอยู่ที่ตัวโปรแกรมนั้นเอง เราทำได้แค่แจ้งให้ผู้พัฒนาโปรแกรมแก้ไขในเวอร์ชันต่อไป, หรือปัญหาอยู่ที่ฮาร์ดแวร์คอมพิวเตอร์ของเราเอง แต่เรายังไม่อยากเสียเงินอัพสเปกให้แรงขึ้น ก็ต้องทำใจใช้คอมพิวเตอร์ที่ทำงานช้าต่อไป

ไม่มีความคิดเห็น:

แสดงความคิดเห็น