Tools for improving the performance of Moodle and other PHP applications Denis Boroja, Manager EAAS Peter Rowley, Director A&I Ellio Mourinho, Programmer EAAS Enterprise Academic Applications, Applications & Integration, 1University Information Technology, York University, Toronto York University • York University is a large comprehensive university located in the northwest part of Toronto. It was established in 1959 as a non-denominational institution. • It is a community with 48,000 undergraduate students, 5,900 graduate students and 7,000 support / admin staff. • Each of York’s eleven Faculties is steeped in rich individual tradition and enjoys a high degree of autonomy 2 York and E-Learning • The Provost has been supporting e-learning with a special initiative • The initiative is supported by four distinct units: • Learning Technology Services (UIT) • Teaching Commons (Provost) • Enterprise Academic Application Services (UIT) • Instructional Technology Centre (UIT) 3 Moodle @ York • Pilot version 1.5 introduced in 2005 with a few Faculties. • First production version (v1.6) introduced in 2006. • Current 2014 Version is 2.5.3+ with MySQL 5.5 • All 11 different faculties are represented in Moodle. 4 Moodle @ York Course Load Increase Year over Year 5 Academic Year # courses used YoY 2009 1,605 - 2010 2,043 27% 2011 2,504 23% 2012 2,880 15% 2013 3,045 6% Moodle @ York Students Load Year over Year 6 Academic Year # of users YoY 2009 41,517 - 2010 49,531 19% 2011 52,081 5% 2012 52,498 1% 2013 54,297 3% Moodle @ York Instructor Load Year over Year 7 Academic Year # of Instructors YoY 2009 1,029 - 2010 1,142 11% 2011 1,938 70% 2012 1,809 -7% 2013 1,973 9% Moodle History at York 8 Core Application Architecture • Production • Application Servers • Four Virtual Application Servers running on Ubuntu 12.04 • 20 GB RAM, 4 Virtual CPU Cores • 20 GB local storage, external filer with 4.1 TB • Database Servers • 2 Physical servers running on Ubuntu 12.04 • Master / Slave with real time replication service • 72GB of RAM, 300 GB local, 230 GB for MySQL • Load Balancer • LVS – configured for 25% traffic for each Application Server • Use of Maintenance Pages during outages. 9 External Links • Camtasia Relay • Lecture recording tool used by instructors • Stores link to a recording in Moodle • Library • Link to YorkU library application. • Returns list of resources, appropriate links and study resources. • Turnitin • Assignment submission and plagiarism detection tool 10 Architecture Diagram 11 Tools • www.Site24x7.com • Third party application used for Application heartbeat monitoring. Records and tracks applications outages. • AppDynamics • Third party application used for overall application / code monitoring. Monitors and records application performance. Used for troubleshooting and optimization. • Google Analytics • Used to monitor user interactions, response time and the application load. 12 Tools (cont.) • Nagios • System level monitoring. (CPU, RAM, Traffic, Filer mounts etc) • jMeter • used for performance testing in QA environments. Simulates up to 150% of the estimated max load. 13 AppDynamics • Dashboard – real-time view of the application 14 AppDynamics • Dashboard – real-time view of the application 15 AppDynamics – Transaction Dashboard 16 AppDynamics – Transaction Overview Good day 17 Bad Day AppDynamics – Transaction Overview Good day 18 Bad Day AppDynamics • Transaction Level Monitoring 19 AppDynamics – Transactions Demo LIVE DEMO 20 AppDynamics – Reporting 21 AppDynamics – Reporting 22 AppDynamics – User Dashboard 23 AppDynamics – Configuration 24 AppDynamics – Configuration 25 Other application monitoring tools • New Relic • DynaTrace Would anyone care to share their experiences with these? 26 Google Analytics • Used to measure and observe user interaction with application. • Measure average application page response time. • Measure current user volume (5 minute span). • Track user behavior. • GOAL: Ensure that the application web pages can support and carry the user volume. 27 Google Analytics – Real-time 28 Google Analytics – Site Speed 29 Google Analytics – Page Details 30 Performance Tuning Changes • Session and Application caching using Memcache and MemcacheD • Fine tune mdl_log. • MySQL innoDB Changes • Memory increase • LDAP server improvements • MySQL Oracle Support 31 Q/A dboroja@yorku.ca prowley@yorku.ca mourinho@yorku.ca 32